Full Code of CrowHawk/JavaLearning for AI

master 7bda9004a34a cached
52 files
90.4 KB
25.4k tokens
69 symbols
1 requests
Download .txt
Repository: CrowHawk/JavaLearning
Branch: master
Commit: 7bda9004a34a
Files: 52
Total size: 90.4 KB

Directory structure:
gitextract_55l6bb7f/

├── .idea/
│   ├── .name
│   ├── compiler.xml
│   ├── copyright/
│   │   └── profiles_settings.xml
│   ├── encodings.xml
│   ├── misc.xml
│   ├── modules.xml
│   ├── uiDesigner.xml
│   ├── vcs.xml
│   └── workspace.xml
├── BasicJava.iml
├── Enumeration/
│   ├── Enumeration.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── EnumCoin.java
│                       └── EnumTest.java
├── Generic/
│   ├── Generic.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       └── GenericTest.java
├── JNAPointer/
│   ├── .Readme.txt.swp
│   ├── JNAPointer.java
│   ├── README.md
│   ├── callback.cpp
│   ├── cppCompile.sh
│   ├── javarun.sh
│   ├── jna-4.2.1.jar
│   └── swap.cpp
├── NIO/
│   ├── NIO.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── CopyFile.java
│                       ├── CreateArrayBuffer.java
│                       ├── CreateBuffer.java
│                       ├── MultiPortEcho.java
│                       ├── ReadAndShow.java
│                       ├── ScatterGather.java
│                       ├── SliceBuffer.java
│                       ├── TypesInByteBuffer.java
│                       ├── UseCharsets.java
│                       ├── UseFileLocks.java
│                       ├── UseFloatBuffer.java
│                       ├── UseMappedFile.java
│                       └── WriteSomeBytes.java
├── Proxy/
│   ├── Proxy.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── Advice.java
│                       ├── ImpAdvice.java
│                       └── ProxyTest.java
├── README.md
├── ReadAndShow.txt
├── Reflect/
│   ├── Reflect.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── FieldReflect.java
│                       └── ReflectTest.java
└── pom.xml

================================================
FILE CONTENTS
================================================

================================================
FILE: .idea/.name
================================================
JavaLearning

================================================
FILE: .idea/compiler.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <resourceExtensions />
    <wildcardResourcePatterns>
      <entry name="!?*.java" />
      <entry name="!?*.form" />
      <entry name="!?*.class" />
      <entry name="!?*.groovy" />
      <entry name="!?*.scala" />
      <entry name="!?*.flex" />
      <entry name="!?*.kt" />
      <entry name="!?*.clj" />
      <entry name="!?*.aj" />
    </wildcardResourcePatterns>
    <annotationProcessing>
      <profile default="true" name="Default" enabled="false">
        <processorPath useClasspath="true" />
      </profile>
    </annotationProcessing>
  </component>
</project>

================================================
FILE: .idea/copyright/profiles_settings.xml
================================================
<component name="CopyrightManager">
  <settings default="" />
</component>

================================================
FILE: .idea/encodings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding">
    <file url="PROJECT" charset="UTF-8" />
  </component>
</project>

================================================
FILE: .idea/misc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="EntryPointsManager">
    <entry_points version="2.0" />
  </component>
  <component name="MavenImportPreferences">
    <option name="generalSettings">
      <MavenGeneralSettings>
        <option name="mavenHome" value="Bundled (Maven 3)" />
      </MavenGeneralSettings>
    </option>
  </component>
  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
    <OptionsSetting value="true" id="Add" />
    <OptionsSetting value="true" id="Remove" />
    <OptionsSetting value="true" id="Checkout" />
    <OptionsSetting value="true" id="Update" />
    <OptionsSetting value="true" id="Status" />
    <OptionsSetting value="true" id="Edit" />
    <ConfirmationsSetting value="0" id="Add" />
    <ConfirmationsSetting value="0" id="Remove" />
  </component>
  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
    <output url="file://$PROJECT_DIR$/out" />
  </component>
</project>

================================================
FILE: .idea/modules.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/Basic-java/Basic-java.iml" filepath="$PROJECT_DIR$/Basic-java/Basic-java.iml" />
    </modules>
  </component>
</project>

================================================
FILE: .idea/uiDesigner.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Palette2">
    <group name="Swing">
      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
      </item>
      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
      </item>
      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
        <initial-values>
          <property name="text" value="Button" />
        </initial-values>
      </item>
      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="RadioButton" />
        </initial-values>
      </item>
      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="CheckBox" />
        </initial-values>
      </item>
      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="Label" />
        </initial-values>
      </item>
      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
          <preferred-size width="200" height="200" />
        </default-constraints>
      </item>
      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
          <preferred-size width="200" height="200" />
        </default-constraints>
      </item>
      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
      </item>
      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
          <preferred-size width="-1" height="20" />
        </default-constraints>
      </item>
      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
      </item>
      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
      </item>
    </group>
  </component>
</project>

================================================
FILE: .idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
  </component>
</project>

================================================
FILE: .idea/workspace.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="0d6b1f02-d1bf-40e9-8d49-8f37a7a4eb68" name="Default" comment="" />
    <ignored path="JavaLearning.iws" />
    <ignored path=".idea/workspace.xml" />
    <ignored path="$PROJECT_DIR$/out/" />
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="TRACKING_ENABLED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
  <component name="CoverageDataManager">
    <SUITE FILE_PATH="coverage/JavaLearning$EnumTest.coverage" NAME="EnumTest Coverage Results" MODIFIED="1486909296779" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false">
      <FILTER>com.crow.*</FILTER>
    </SUITE>
  </component>
  <component name="CreatePatchCommitExecutor">
    <option name="PATCH_PATH" value="" />
  </component>
  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
  <component name="FavoritesManager">
    <favorites_list name="JavaLearning" />
  </component>
  <component name="FileEditorManager">
    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
      <file leaf-file-name="GenericTest.java" pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Generic/GenericTest.java">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="0.9072165">
              <caret line="49" column="1" selection-start-line="0" selection-start-column="0" selection-end-line="49" selection-end-column="1" />
              <folding>
                <element signature="imports" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="ProxyTest.java" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ProxyTest.java">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="0.0">
              <caret line="19" column="0" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
              <folding>
                <element signature="imports" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="Advice.java" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/Advice.java">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="0.0">
              <caret line="10" column="1" selection-start-line="0" selection-start-column="0" selection-end-line="10" selection-end-column="1" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="ImpAdvice.java" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ImpAdvice.java">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="0.0">
              <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
    </leaf>
  </component>
  <component name="FileTemplateManagerImpl">
    <option name="RECENT_TEMPLATES">
      <list>
        <option value="Interface" />
        <option value="Class" />
      </list>
    </option>
  </component>
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  </component>
  <component name="GradleLocalSettings">
    <option name="externalProjectsViewState">
      <projects_view />
    </option>
  </component>
  <component name="IdeDocumentHistory">
    <option name="CHANGED_PATHS">
      <list>
        <option value="$PROJECT_DIR$/jdk5-new/src/com/crow/Reflect/FieldReflect.java" />
        <option value="$PROJECT_DIR$/jdk5-new/src/com/crow/Reflect/ReflectTest.java" />
        <option value="$PROJECT_DIR$/jdk5-new/src/com/crow/EnumTest.java" />
        <option value="$PROJECT_DIR$/jdk5-new/src/com/crow/EnumCoin.java" />
        <option value="$PROJECT_DIR$/jdk5-new/src/com/crow/Enumeration/EnumCoin.java" />
        <option value="$PROJECT_DIR$/jdk5-new/src/com/crow/Enumeration/EnumTest.java" />
        <option value="$PROJECT_DIR$/Basic-java/src/com/crow/Generic/GenericTest.java" />
        <option value="$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/Advice.java" />
        <option value="$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ImpAdvice.java" />
        <option value="$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ProxyTest.java" />
      </list>
    </option>
  </component>
  <component name="ProjectFrameBounds">
    <option name="y" value="23" />
    <option name="width" value="1440" />
    <option name="height" value="832" />
  </component>
  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
    <OptionsSetting value="true" id="Add" />
    <OptionsSetting value="true" id="Remove" />
    <OptionsSetting value="true" id="Checkout" />
    <OptionsSetting value="true" id="Update" />
    <OptionsSetting value="true" id="Status" />
    <OptionsSetting value="true" id="Edit" />
    <ConfirmationsSetting value="0" id="Add" />
    <ConfirmationsSetting value="0" id="Remove" />
  </component>
  <component name="ProjectView">
    <navigator currentView="ProjectPane" proportions="" version="1">
      <flattenPackages />
      <showMembers />
      <showModules />
      <showLibraryContents />
      <hideEmptyPackages ProjectPane="false" />
      <abbreviatePackageNames />
      <autoscrollToSource />
      <autoscrollFromSource />
      <sortByType />
      <manualOrder />
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="Scratches" />
      <pane id="Scope" />
      <pane id="PackagesPane" />
      <pane id="ProjectPane">
        <subPane>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="JavaLearning" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="External Libraries" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ExternalLibrariesNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="&lt; 1.8 &gt;" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="JavaLearning" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Basic-java" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="JavaLearning" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Basic-java" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="com" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="crow" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Reflect" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="JavaLearning" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Basic-java" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="com" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="crow" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Proxy" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="JavaLearning" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Basic-java" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="com" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="crow" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Generic" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="JavaLearning" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Basic-java" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="com" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="crow" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="Enumeration" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
        </subPane>
      </pane>
    </panes>
  </component>
  <component name="PropertiesComponent">
    <property name="settings.editor.selected.configurable" value="editor.preferences.appearance" />
    <property name="settings.editor.splitter.proportion" value="0.2" />
    <property name="project.structure.last.edited" value="Modules" />
    <property name="project.structure.proportion" value="0.0" />
    <property name="project.structure.side.proportion" value="0.0" />
    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
  </component>
  <component name="RecentsManager">
    <key name="CopyClassDialog.RECENTS_KEY">
      <recent name="com.crow.Enumeration" />
    </key>
  </component>
  <component name="RunManager" selected="Application.ProxyTest">
    <configuration default="false" name="ReflectTest" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
        <pattern>
          <option name="PATTERN" value="com.crow.Reflect.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <option name="MAIN_CLASS_NAME" value="com.crow.Reflect.ReflectTest" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="jdk5-new" />
      <envs />
      <method />
    </configuration>
    <configuration default="false" name="EnumTest" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
        <pattern>
          <option name="PATTERN" value="com.crow.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <option name="MAIN_CLASS_NAME" value="com.crow.Enumeration.EnumTest" />
      <option name="VM_PARAMETERS" value="" />
      <option name="PROGRAM_PARAMETERS" value="" />
      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="false" name="GenericTest" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
        <pattern>
          <option name="PATTERN" value="com.crow.Generic.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <option name="MAIN_CLASS_NAME" value="com.crow.Generic.GenericTest" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="Basic-java" />
      <envs />
      <method />
    </configuration>
    <configuration default="false" name="ProxyTest" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
        <pattern>
          <option name="PATTERN" value="com.crow.Proxy.*" />
          <option name="ENABLED" value="true" />
        </pattern>
      </extension>
      <option name="MAIN_CLASS_NAME" value="com.crow.Proxy.ProxyTest" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="Basic-java" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
      <module name="" />
      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
      <option name="PROGRAM_PARAMETERS" />
      <method />
    </configuration>
    <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
      <module name="" />
      <option name="ACTIVITY_CLASS" value="" />
      <option name="MODE" value="default_activity" />
      <option name="DEPLOY" value="true" />
      <option name="ARTIFACT_NAME" value="" />
      <option name="TARGET_SELECTION_MODE" value="EMULATOR" />
      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
      <option name="PREFERRED_AVD" value="" />
      <option name="USE_COMMAND_LINE" value="true" />
      <option name="COMMAND_LINE" value="" />
      <option name="WIPE_USER_DATA" value="false" />
      <option name="DISABLE_BOOT_ANIMATION" value="false" />
      <option name="NETWORK_SPEED" value="full" />
      <option name="NETWORK_LATENCY" value="none" />
      <option name="CLEAR_LOGCAT" value="false" />
      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
      <option name="SELECTED_CLOUD_DEVICE_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_DEVICE_PROJECT_ID" value="" />
      <option name="IS_VALID_CLOUD_MATRIX_SELECTION" value="false" />
      <option name="INVALID_CLOUD_MATRIX_SELECTION_ERROR" value="" />
      <option name="IS_VALID_CLOUD_DEVICE_SELECTION" value="false" />
      <option name="INVALID_CLOUD_DEVICE_SELECTION_ERROR" value="" />
      <option name="CLOUD_DEVICE_SERIAL_NUMBER" value="" />
      <method />
    </configuration>
    <configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests">
      <module name="" />
      <option name="TESTING_TYPE" value="0" />
      <option name="INSTRUMENTATION_RUNNER_CLASS" value="" />
      <option name="METHOD_NAME" value="" />
      <option name="CLASS_NAME" value="" />
      <option name="PACKAGE_NAME" value="" />
      <option name="TARGET_SELECTION_MODE" value="EMULATOR" />
      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
      <option name="PREFERRED_AVD" value="" />
      <option name="USE_COMMAND_LINE" value="true" />
      <option name="COMMAND_LINE" value="" />
      <option name="WIPE_USER_DATA" value="false" />
      <option name="DISABLE_BOOT_ANIMATION" value="false" />
      <option name="NETWORK_SPEED" value="full" />
      <option name="NETWORK_LATENCY" value="none" />
      <option name="CLEAR_LOGCAT" value="false" />
      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
      <option name="SELECTED_CLOUD_DEVICE_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_DEVICE_PROJECT_ID" value="" />
      <option name="IS_VALID_CLOUD_MATRIX_SELECTION" value="false" />
      <option name="INVALID_CLOUD_MATRIX_SELECTION_ERROR" value="" />
      <option name="IS_VALID_CLOUD_DEVICE_SELECTION" value="false" />
      <option name="INVALID_CLOUD_DEVICE_SELECTION_ERROR" value="" />
      <option name="CLOUD_DEVICE_SERIAL_NUMBER" value="" />
      <method />
    </configuration>
    <configuration default="true" type="Applet" factoryName="Applet">
      <option name="HTML_USED" value="false" />
      <option name="WIDTH" value="400" />
      <option name="HEIGHT" value="300" />
      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
      <module />
      <method />
    </configuration>
    <configuration default="true" type="Application" factoryName="Application">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
      <ExternalSystemSettings>
        <option name="executionName" />
        <option name="externalProjectPath" />
        <option name="externalSystemIdString" value="GRADLE" />
        <option name="scriptParameters" />
        <option name="taskDescriptions">
          <list />
        </option>
        <option name="taskNames">
          <list />
        </option>
        <option name="vmOptions" />
      </ExternalSystemSettings>
      <method />
    </configuration>
    <configuration default="true" type="JUnit" factoryName="JUnit">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="TEST_OBJECT" value="class" />
      <option name="VM_PARAMETERS" value="-ea" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <envs />
      <patterns />
      <method />
    </configuration>
    <configuration default="true" type="JUnitTestDiscovery" factoryName="JUnit Test Discovery" changeList="All">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="TEST_OBJECT" value="class" />
      <option name="VM_PARAMETERS" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <envs />
      <patterns />
      <method />
    </configuration>
    <configuration default="true" type="JarApplication" factoryName="JAR Application">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="Java Scratch" factoryName="Java Scratch">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="SCRATCH_FILE_ID" value="0" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="JetRunConfigurationType" factoryName="Kotlin">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="jdk5-new" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="KotlinStandaloneScriptRunConfigurationType" factoryName="Kotlin script">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="filePath" />
      <option name="vmParameters" />
      <option name="alternativeJrePath" />
      <option name="programParameters" />
      <option name="passParentEnvs" value="true" />
      <option name="workingDirectory" />
      <option name="isAlternativeJrePathEnabled" value="false" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="Remote" factoryName="Remote">
      <option name="USE_SOCKET_TRANSPORT" value="true" />
      <option name="SERVER_MODE" value="false" />
      <option name="SHMEM_ADDRESS" value="javadebug" />
      <option name="HOST" value="localhost" />
      <option name="PORT" value="5005" />
      <method />
    </configuration>
    <configuration default="true" type="TestNG" factoryName="TestNG">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="SUITE_NAME" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="GROUP_NAME" />
      <option name="TEST_OBJECT" value="CLASS" />
      <option name="VM_PARAMETERS" value="-ea" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
      <option name="OUTPUT_DIRECTORY" />
      <option name="ANNOTATION_TYPE" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <option name="USE_DEFAULT_REPORTERS" value="false" />
      <option name="PROPERTIES_FILE" />
      <envs />
      <properties />
      <listeners />
      <method />
    </configuration>
    <configuration default="true" type="TestNGTestDiscovery" factoryName="TestNG Test Discovery" changeList="All">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="SUITE_NAME" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="GROUP_NAME" />
      <option name="TEST_OBJECT" value="CLASS" />
      <option name="VM_PARAMETERS" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="OUTPUT_DIRECTORY" />
      <option name="ANNOTATION_TYPE" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <option name="USE_DEFAULT_REPORTERS" value="false" />
      <option name="PROPERTIES_FILE" />
      <envs />
      <properties />
      <listeners />
      <method />
    </configuration>
    <list size="4">
      <item index="0" class="java.lang.String" itemvalue="Application.ReflectTest" />
      <item index="1" class="java.lang.String" itemvalue="Application.EnumTest" />
      <item index="2" class="java.lang.String" itemvalue="Application.GenericTest" />
      <item index="3" class="java.lang.String" itemvalue="Application.ProxyTest" />
    </list>
    <recent_temporary>
      <list size="4">
        <item index="0" class="java.lang.String" itemvalue="Application.ProxyTest" />
        <item index="1" class="java.lang.String" itemvalue="Application.GenericTest" />
        <item index="2" class="java.lang.String" itemvalue="Application.EnumTest" />
        <item index="3" class="java.lang.String" itemvalue="Application.ReflectTest" />
      </list>
    </recent_temporary>
  </component>
  <component name="ShelveChangesManager" show_recycled="false" />
  <component name="SvnConfiguration">
    <configuration />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="0d6b1f02-d1bf-40e9-8d49-8f37a7a4eb68" name="Default" comment="" />
      <created>1486393746329</created>
      <option name="number" value="Default" />
      <updated>1486393746329</updated>
    </task>
    <task id="LOCAL-00001" summary="Generic">
      <created>1487217889886</created>
      <option name="number" value="00001" />
      <option name="project" value="LOCAL" />
      <updated>1487217889886</updated>
    </task>
    <task id="LOCAL-00002" summary="Generic2">
      <created>1487234520435</created>
      <option name="number" value="00002" />
      <option name="project" value="LOCAL" />
      <updated>1487234520435</updated>
    </task>
    <task id="LOCAL-00003" summary="Generic3">
      <created>1487234799472</created>
      <option name="number" value="00003" />
      <option name="project" value="LOCAL" />
      <updated>1487234799472</updated>
    </task>
    <task id="LOCAL-00004" summary="Proxy">
      <created>1487592431820</created>
      <option name="number" value="00004" />
      <option name="project" value="LOCAL" />
      <updated>1487592431820</updated>
    </task>
    <option name="localTasksCounter" value="5" />
    <servers />
  </component>
  <component name="ToolWindowManager">
    <frame x="0" y="23" width="1440" height="832" extended-state="6" />
    <editor active="true" />
    <layout>
      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.327654" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.327654" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3298611" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.22222222" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
    </layout>
  </component>
  <component name="Vcs.Log.UiProperties">
    <option name="RECENTLY_FILTERED_USER_GROUPS">
      <collection />
    </option>
    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
      <collection />
    </option>
  </component>
  <component name="VcsContentAnnotationSettings">
    <option name="myLimit" value="2678400000" />
  </component>
  <component name="VcsManagerConfiguration">
    <MESSAGE value="Generic" />
    <MESSAGE value="Generic2" />
    <MESSAGE value="Generic3" />
    <MESSAGE value="Proxy" />
    <option name="LAST_COMMIT_MESSAGE" value="Proxy" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager />
    <watches-manager />
  </component>
  <component name="antWorkspaceConfiguration">
    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
    <option name="FILTER_TARGETS" value="false" />
  </component>
  <component name="editorHistoryManager">
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/ReflectTest.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="15" column="33" selection-start-line="15" selection-start-column="33" selection-end-line="15" selection-end-column="33" />
          <folding>
            <element signature="imports" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/FieldReflect.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="16" column="19" selection-start-line="16" selection-start-column="19" selection-end-line="16" selection-end-column="19" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/Basic-java.iml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Enumeration/EnumTest.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.371134">
          <caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Enumeration/EnumCoin.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/FieldReflect.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.49484536">
          <caret line="16" column="19" selection-start-line="16" selection-start-column="19" selection-end-line="16" selection-end-column="19" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Reflect/ReflectTest.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="24" selection-start-line="0" selection-start-column="24" selection-end-line="0" selection-end-column="24" />
          <folding>
            <element signature="imports" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ProxyTest.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="19" column="0" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
          <folding>
            <element signature="imports" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/Advice.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="10" column="1" selection-start-line="0" selection-start-column="0" selection-end-line="10" selection-end-column="1" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Proxy/ImpAdvice.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Basic-java/src/com/crow/Generic/GenericTest.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.9072165">
          <caret line="49" column="1" selection-start-line="0" selection-start-column="0" selection-end-line="49" selection-end-column="1" />
          <folding>
            <element signature="imports" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
  </component>
  <component name="masterDetails">
    <states>
      <state key="ArtifactsStructureConfigurable.UI">
        <settings>
          <artifact-editor />
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="FacetStructureConfigurable.UI">
        <settings>
          <last-edited>No facets are configured</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="GlobalLibrariesConfigurable.UI">
        <settings>
          <last-edited>scala-sdk-2.11.7</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="JdkListConfigurable.UI">
        <settings>
          <last-edited>1.8</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ModuleStructureConfigurable.UI">
        <settings>
          <last-edited>jdk5-new</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
                <option value="0.6" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ProjectLibrariesConfigurable.UI">
        <settings>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ScopeChooserConfigurable.UI">
        <settings>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
    </states>
  </component>
</project>

================================================
FILE: BasicJava.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
  </component>
</module>

================================================
FILE: Enumeration/Enumeration.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
  </component>
</module>

================================================
FILE: Enumeration/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Basic-Java</artifactId>
        <groupId>com.crow</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Enumeration</artifactId>
    <packaging>jar</packaging>

    <name>Enumeration</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


================================================
FILE: Enumeration/src/main/java/com/crow/EnumCoin.java
================================================
package com.crow;

/**
 * Created by CrowHawk on 17/2/12.
 */

public abstract class EnumCoin {//Implement an Enum with a common class
    private int tag;
    private EnumCoin(int tag){
        this.tag = tag;
    }
    public static final EnumCoin OBCERSE = new EnumCoin(1){//an object of an inner class extending EnumCoin
        public EnumCoin enumNext(){
            return BACK;
        }
    };
    public static final EnumCoin BACK = new EnumCoin(0){
        public EnumCoin enumNext(){
            return OBCERSE;
        }
    };

    public String toString(){
        return this == OBCERSE?"Obcerse":"Back";
    }

/*    public EnumCoin enumNext(){
        if(this == OBCERSE){
            return BACK;
        }
        else{
            return OBCERSE;
        }
    }*/

    public abstract EnumCoin enumNext();
}

================================================
FILE: Enumeration/src/main/java/com/crow/EnumTest.java
================================================
package com.crow;

/**
 * Created by CrowHawk on 17/2/12.
 */

public class EnumTest {
    public static void main(String[] args) {
        EnumCoin obcerse = EnumCoin.OBCERSE;
        System.out.println("The other side of the Obcerse is " + obcerse.enumNext().toString());
    }
}


================================================
FILE: Generic/Generic.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
  </component>
</module>

================================================
FILE: Generic/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Basic-Java</artifactId>
        <groupId>com.crow</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Generic</artifactId>
    <packaging>jar</packaging>

    <name>Generic</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


================================================
FILE: Generic/src/main/java/com/crow/GenericTest.java
================================================
package com.crow;

/**
 * Created by CrowHawk on 17/2/16.
 */


import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class GenericTest {
    public static void main(String[] args) throws Exception{
        HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
        hashMap.put("Tom", 1);
        hashMap.put("Jerry", 2);
        hashMap.put("Nick", 3);
        printHashmap(hashMap);

        String[] array = new String[]{"crow","martin","pattie"};
        swap(array, 1, 2);
        System.out.println("array[2] = " + array[2]);

        //用反射的方法获取printHashmap方法的参数并打印
        Method printMethod = GenericTest.class.getMethod("printHashmap", HashMap.class);
        Type[] types = printMethod.getGenericParameterTypes();
        ParameterizedType parameterizedType = (ParameterizedType)types[0];
        Type[] actualTypes = parameterizedType.getActualTypeArguments();
        System.out.println("The paratype is " + parameterizedType.getRawType() + "<" + actualTypes[0] + "," + actualTypes[1] + ">");
    }


    public static void printHashmap(HashMap<String, Integer> hashMap){//遍历HashMap并打印其内容
        Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
        for(Map.Entry<String, Integer> entry: entrySet){
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
        Iterator<Map.Entry<String, Integer>> iter = entrySet.iterator();
        while(iter.hasNext()){
            Map.Entry<String, Integer> entry = iter.next();
            System.out.print("Key is " + entry.getKey() + ",");
            System.out.println("Value is " + entry.getValue());
        }
    }

    public static <T> void swap(T[] arr, int i, int j){//交换泛型数组中的任意两个元素
        T tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
}


================================================
FILE: JNAPointer/JNAPointer.java
================================================
import com.sun.jna.*;
import com.sun.jna.ptr.*;

public class JNAPointer {

	/**
	 * @param args
	 */
	public interface CLib extends Library{
	
		public interface OpenFunc extends Callback{
			void invoke ( IntByReference p1);
			//void invoke(String filename , int i);
		}
		
		public class FunCallBack implements OpenFunc{
			@Override
			/*public void invoke(String filename , int i){
				System.out.println("callback called.");
				System.out.println(filename);
			}*/
			    public void invoke( IntByReference p1){
				
 				System.out.println(p1);
				System.out.println("callback called.");
			}
		}
		
		void init(OpenFunc openfunc);
		void swap( IntByReference p1 , IntByReference p2);
		void test();
	}
	
	public static void main(String[] args) {
	
		CLib lib =(CLib)Native.loadLibrary("JNALib", CLib.class);
		CLib lib2 = (CLib)Native.loadLibrary("swap",CLib.class);
		CLib.FunCallBack  func = new CLib.FunCallBack();
		IntByReference p1 = new IntByReference (3);
		IntByReference p2 = new IntByReference (5);
		lib.init( func);
	    lib2.swap(p1, p2);//Java called C++ pointer
		lib.test();//C++ callback java
	}
}


================================================
FILE: JNAPointer/README.md
================================================
# JNA Sample

---

**Java用JNA跨语言调用C++指针代码,在C++代码外封装一层C接口**
**Java将C++指针映射为Pointer类**

+ 先执行cppComplie.sh生成动态链接库
+ 再执行javarun.sh运行Java程序


================================================
FILE: JNAPointer/callback.cpp
================================================
#include <stdlib.h>
#include <iostream>

using namespace std;

extern "C"
{
	typedef void (*OpenFunc) (const char*, int);
	
	OpenFunc openfunc=NULL;

	void init(OpenFunc func){
		cout << "init called" <<endl;
		openfunc = func;
	}

	void test(){
		if(openfunc == NULL){
			cout << "openfunc is NULL" << endl;
		}
		(*openfunc)("test", 0);
	}
}


================================================
FILE: JNAPointer/cppCompile.sh
================================================
#/bin/sh

CURRENT=$(dirname "$0")
cd $CURRENT
HOMEDIR=`pwd`/../..

g++ callback.cpp -fPIC -shared -o libJNALib.so
g++ swap.cpp -fPIC -shared -o libswap.so 


================================================
FILE: JNAPointer/javarun.sh
================================================
#/bin/sh

CURRENT=$(dirname "$0")
cd $CURRENT
HOMEDIR=`pwd`/../..

javac -cp jna-4.2.1.jar:. JNAPointer.java
java -cp jna-4.2.1.jar:. JNAPointer


================================================
FILE: JNAPointer/swap.cpp
================================================
#include <stdlib.h>
#include <iostream>
using namespace std;

extern "C"{
void swap(int *p1,int *p2);

 void swap(int *p1,int *p2){
		cout << "p1="<< *p1 << ",p2=" << *p2 <<endl;
		cout << "swap"<<endl;
		int temp;
		temp = *p1;
		*p1 = *p2;
		*p2 = temp;
		cout << "p1="<< *p1 << ",p2=" << *p2 <<endl;
	}
}


================================================
FILE: NIO/NIO.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
  </component>
</module>

================================================
FILE: NIO/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Basic-Java</artifactId>
        <groupId>com.crow</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>NIO</artifactId>
    <packaging>jar</packaging>

    <name>NIO</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


================================================
FILE: NIO/src/main/java/com/crow/CopyFile.java
================================================
package com.crow;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class CopyFile {
    public static void main(String[] args) throws Exception {
        if (args.length<2) {
            System.err.println( "Usage: java CopyFile infile outfile" );
            System.exit( 1 );
        }

        String infile = args[0];
        String outfile = args[1];

        FileInputStream fin = new FileInputStream( infile );
        FileOutputStream fout = new FileOutputStream( outfile );

        FileChannel fcin = fin.getChannel();
        FileChannel fcout = fout.getChannel();

        ByteBuffer buffer = ByteBuffer.allocate( 1024 );

        while (true) {
            buffer.clear();

            int r = fcin.read(buffer);

            if (r == -1) {
                break;
            }

            buffer.flip();

            fcout.write(buffer);
        }
    }
}


================================================
FILE: NIO/src/main/java/com/crow/CreateArrayBuffer.java
================================================
package com.crow;

import java.nio.ByteBuffer;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class CreateArrayBuffer {
    static public void main( String args[] ) throws Exception {
        byte array[] = new byte[1024];

        ByteBuffer buffer = ByteBuffer.wrap( array );

        buffer.put( (byte)'a' );
        buffer.put( (byte)'b' );
        buffer.put( (byte)'c' );

        buffer.flip();

        System.out.println( (char)buffer.get() );
        System.out.println( (char)buffer.get() );
        System.out.println( (char)buffer.get() );
    }
}


================================================
FILE: NIO/src/main/java/com/crow/CreateBuffer.java
================================================
package com.crow;

import java.nio.ByteBuffer;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class CreateBuffer {
    public static void main( String args[] ) throws Exception {
        ByteBuffer buffer = ByteBuffer.allocate( 1024 );

        buffer.put( (byte)'a' );
        buffer.put( (byte)'b' );
        buffer.put( (byte)'c' );

        buffer.flip();

        System.out.println( (char)buffer.get() );
        System.out.println( (char)buffer.get() );
        System.out.println( (char)buffer.get() );
    }
}


================================================
FILE: NIO/src/main/java/com/crow/MultiPortEcho.java
================================================
package com.crow;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
import java.util.Set;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class MultiPortEcho {
    private int ports[];
    private ByteBuffer echoBuffer = ByteBuffer.allocate( 1024 );

    public MultiPortEcho( int ports[] ) throws IOException {
        this.ports = ports;

        go();
    }

    private void go() throws IOException {

        Selector selector = Selector.open();

        // Open a listener on each port, and register each one
        // with the selector
        for (int i=0; i < ports.length; i++) {
            ServerSocketChannel ssc = ServerSocketChannel.open();
            ssc.configureBlocking(false);
            ServerSocket ss = ssc.socket();
            InetSocketAddress address = new InetSocketAddress(ports[i]);
            ss.bind(address);

            //将新打开的 ServerSocketChannels 注册到 Selector上,指定监听accept事件
            SelectionKey key = ssc.register(selector, SelectionKey.OP_ACCEPT);
            System.out.println("Going to listen on " + ports[i]);
        }

        while (true) {
            int num = selector.select();//返回该选择器中对I/O事件准备就绪的channel对应的key的数量
            Set selectedKeys = selector.selectedKeys();//返回key的集合
            Iterator it = selectedKeys.iterator();
            while (it.hasNext()) {//遍历key集合,集合中的元素为SelectionKey类型
                SelectionKey key = (SelectionKey) it.next();
                if ((key.readyOps() & SelectionKey.OP_ACCEPT)
                        == SelectionKey.OP_ACCEPT) {//检查发生了什么类型的事件
                    // Accept the new connection
                    ServerSocketChannel ssc = (ServerSocketChannel)key.channel();
                    SocketChannel sc = ssc.accept();
                    sc.configureBlocking( false );

                    // Add the new connection to the selector
                    SelectionKey newKey = sc.register( selector, SelectionKey.OP_READ );//监听read事件
                    //Selector不会自己从已选择键集中移除SelectionKey实例。必须在处理完通道时自己移除。下次该通道变成就绪时,Selector会再次将其放入已选择键集中。
                    it.remove();

                    System.out.println( "Got connection from "+sc );
                }else if ((key.readyOps() & SelectionKey.OP_READ)
                        == SelectionKey.OP_READ) {
                    // Read the data
                    SocketChannel sc = (SocketChannel)key.channel();

                    // Echo data
                    int bytesEchoed = 0;
                    while (true) {
                        echoBuffer.clear();
                        int r = sc.read( echoBuffer );

                        if (r<=0) {
                            break;
                        }
                        echoBuffer.flip();

                        sc.write( echoBuffer );
                        bytesEchoed += r;
                    }

                    System.out.println( "Echoed "+bytesEchoed+" from "+sc );

                    it.remove();
                }
            }
        }
    }

    public static void main( String args[] ) throws Exception {
        if (args.length<=0) {
            System.err.println( "Usage: java MultiPortEcho port [port port ...]" );
            System.exit( 1 );
        }

        int ports[] = new int[args.length];

        for (int i=0; i<args.length; ++i) {
            ports[i] = Integer.parseInt( args[i] );
        }

        new MultiPortEcho( ports );
    }


}


================================================
FILE: NIO/src/main/java/com/crow/ReadAndShow.java
================================================
package com.crow;

import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class ReadAndShow {//从文件中读取数据并打印
    public static void main(String[] args) throws Exception{
        FileInputStream fin = new FileInputStream("ReadAndShow.txt");
        FileChannel fc = fin.getChannel();
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        fc.read(buffer);
        buffer.flip();
        for(int i = 0; buffer.remaining() > 0; i++) {
            System.out.println("Character" + i + ": " + (char)buffer.get());
        }
        fin.close();
    }
}


================================================
FILE: NIO/src/main/java/com/crow/ScatterGather.java
================================================
package com.crow;

import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class ScatterGather {
    static private final int firstHeaderLength = 2;
    static private final int secondHeaderLength = 4;
    static private final int bodyLength = 6;

    static public void main( String args[] ) throws Exception {
        if (args.length!=1) {
            System.err.println( "Usage: java UseScatterGather port" );
            System.exit( 1 );
        }

        int port = Integer.parseInt( args[0] );

        ServerSocketChannel ssc = ServerSocketChannel.open();
        InetSocketAddress address = new InetSocketAddress( port );
        ssc.socket().bind( address );

        int messageLength =
                firstHeaderLength + secondHeaderLength + bodyLength;

        ByteBuffer buffers[] = new ByteBuffer[3];
        buffers[0] = ByteBuffer.allocate( firstHeaderLength );
        buffers[1] = ByteBuffer.allocate( secondHeaderLength );
        buffers[2] = ByteBuffer.allocate( bodyLength );

        SocketChannel sc = ssc.accept();

        while (true) {

            // Scatter-read into buffers
            int bytesRead = 0;
            while (bytesRead < messageLength) {
                long r = sc.read( buffers );
                bytesRead += r;

                System.out.println( "r "+r );
                for (int i=0; i < buffers.length; ++i) {
                    ByteBuffer bb = buffers[i];
                    System.out.println( "b " + i + " " + bb.position() + " " + bb.limit() );
                }
            }

            // Process message here

            // Flip buffers
            for (int i=0; i<buffers.length; ++i) {
                ByteBuffer bb = buffers[i];
                bb.flip();
            }

            // Scatter-write back out
            long bytesWritten = 0;
            while (bytesWritten<messageLength) {
                long r = sc.write( buffers );
                bytesWritten += r;
            }

            // Clear buffers
            for (int i=0; i < buffers.length; ++i) {
                ByteBuffer bb = buffers[i];
                bb.clear();
            }

            System.out.println( bytesRead+" "+bytesWritten+" "+messageLength );
        }
    }
}


================================================
FILE: NIO/src/main/java/com/crow/SliceBuffer.java
================================================
package com.crow;

import java.nio.ByteBuffer;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class SliceBuffer {
    public static void main(String[] args) throws Exception {
        ByteBuffer buffer = ByteBuffer.allocate(10);
        for(int i = 0; i < buffer.capacity(); i++) {
            buffer.put((byte) i);
        }

        buffer.position(3);
        buffer.limit(7);

        ByteBuffer slice = buffer.slice();

        for(int i = 0; i < slice.capacity(); i++) {
            byte b = slice.get(i);
            b *= 11;
            slice.put(i, b);
        }

        buffer.position(0);
        buffer.limit(buffer.capacity());

        while (buffer.hasRemaining()) {
            System.out.println(buffer.get());
        }
    }
}


================================================
FILE: NIO/src/main/java/com/crow/TypesInByteBuffer.java
================================================
package com.crow;

import java.nio.ByteBuffer;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class TypesInByteBuffer {//在ByteBuffer中放入不同类型的数据
    public static void main(String args[]) throws Exception{
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        buffer.putInt(30);
        buffer.putChar('a');
        buffer.putDouble(Math.PI);

        buffer.flip();

        System.out.println(buffer.getInt());
        System.out.println(buffer.getChar());
        System.out.println(buffer.getDouble());
    }
}


================================================
FILE: NIO/src/main/java/com/crow/UseCharsets.java
================================================
package com.crow;

import java.io.File;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class UseCharsets {
    public static void main(String[] args) throws Exception{
        String inputFile = "ReadAndShow.txt";
        String outputFile = "sampleout.txt";
        long inputLength = new File( inputFile ).length();
        RandomAccessFile inf = new RandomAccessFile( inputFile, "r" );
        RandomAccessFile outf = new RandomAccessFile( outputFile, "rw" );

        FileChannel infc = inf.getChannel();
        FileChannel outfc = outf.getChannel();

        MappedByteBuffer inputData =  infc.map(FileChannel.MapMode.READ_ONLY, 0, inputLength);
        Charset latin1 = Charset.forName( "ISO-8859-1" );
        CharsetDecoder decoder = latin1.newDecoder();//解码器
        CharsetEncoder encoder = latin1.newEncoder();//编码器

        CharBuffer cb = decoder.decode( inputData );//将字节数据解码为一组字符
        // Process char data here
        ByteBuffer outputData = encoder.encode( cb );//要写回数据,我们必须使用 CharsetEncoder 将它转换回字节

        outfc.write( outputData );

        inf.close();
        outf.close();

    }
}


================================================
FILE: NIO/src/main/java/com/crow/UseFileLocks.java
================================================
package com.crow;

import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class UseFileLocks {
    static private final int start = 10;
    static private final int end = 20;

    public static void main(String[] args) throws Exception {//使用文件锁的示例
        RandomAccessFile raf = new RandomAccessFile("ReadAndShow.txt", "rw");
        FileChannel fc = raf.getChannel();

        //Get Lock
        System.out.println("Trying to get lock.");
        FileLock lock = fc.lock(start, end, false);
        System.out.println( "got lock!" );

        // Pause
        System.out.println( "pausing" );
        try {
            Thread.sleep( 3000 );
        } catch( InterruptedException ie ) {

        }

        // Release lock
        System.out.println( "going to release lock" );
        lock.release();
        System.out.println( "released lock" );

        raf.close();
    }
}


================================================
FILE: NIO/src/main/java/com/crow/UseFloatBuffer.java
================================================
package com.crow;

import java.nio.FloatBuffer;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class UseFloatBuffer {
    public static void main(String[] args) throws Exception{
        FloatBuffer buffer = FloatBuffer.allocate(10);
        for(int i = 0; i < buffer.capacity(); i++) {
            float f = (float)Math.sin((((float)i)/10)*(2*Math.PI));
            buffer.put(f);
        }
        buffer.flip();
        while(buffer.hasRemaining()) {
            System.out.println(buffer.get());
        }
    }
}


================================================
FILE: NIO/src/main/java/com/crow/UseMappedFile.java
================================================
package com.crow;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class UseMappedFile {
}


================================================
FILE: NIO/src/main/java/com/crow/WriteSomeBytes.java
================================================
package com.crow;

import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * Created by CrowHawk on 17/9/4.
 */
public class WriteSomeBytes {//将自定义数据写入文件
    static private final byte[] message = { 83, 111, 109, 101, 32, 98, 121, 116, 101, 115, 46 };

    public static void main(String[] args) throws Exception{
        FileOutputStream fout = new FileOutputStream("somebytes.txt");
        FileChannel fc = fout.getChannel();
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        for(int i = 0; i < message.length; i++) {
            buffer.put(message[i]);
        }
        buffer.flip();
        fc.write(buffer);
        fout.close();
    }
}


================================================
FILE: Proxy/Proxy.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
  </component>
</module>

================================================
FILE: Proxy/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Basic-Java</artifactId>
        <groupId>com.crow</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Proxy</artifactId>
    <packaging>jar</packaging>

    <name>Proxy</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


================================================
FILE: Proxy/src/main/java/com/crow/Advice.java
================================================
package com.crow;

import java.lang.reflect.Method;

/**
 * Created by CrowHawk on 17/2/20.
 */
public interface Advice {
    void forwardMethod(Method method);
    void backMethod(Method method);
}


================================================
FILE: Proxy/src/main/java/com/crow/ImpAdvice.java
================================================
package com.crow;

import java.lang.reflect.Method;

/**
 * Created by CrowHawk on 17/2/20.
 */
public class ImpAdvice implements Advice {
    long beginTime = 0;
    public void forwardMethod(Method method){
        System.out.println("end");
        beginTime = System.currentTimeMillis();
    }

    public void backMethod(Method method){
        System.out.println("start");
        long endTime = System.currentTimeMillis();
        System.out.println(method.getName() + " running time of " + (endTime - beginTime));
    }
}


================================================
FILE: Proxy/src/main/java/com/crow/ProxyTest.java
================================================
package com.crow;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collection;

/**
 * Created by CrowHawk on 17/2/20.
 */
public class ProxyTest {
    public static void main(String args[]){
        ArrayList<String> target = new ArrayList<>();//创建目标类的实例对象
        ImpAdvice impAdvice = new ImpAdvice();
        Collection proxy = (Collection) getProxy(target, impAdvice);//创建动态类
        proxy.add("aa");
        System.out.println(proxy.size());
        System.out.println(proxy.getClass().getName());

    }

    public static Object getProxy(final Object target, final Advice advice){
        Object proxy = Proxy.newProxyInstance(
                target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),
                new InvocationHandler() {//动态类通过Invocation类的invoke方法调用目标类所需的方法
                    public Object invoke(Object proxy, Method method, Object[] args) throws Exception {
                        advice.forwardMethod(method);
                        Object retVal = method.invoke(target, args);
                        advice.backMethod(method);
                        return retVal;
                    }
                }
        );
        return proxy;
    }

}


================================================
FILE: README.md
================================================
# JavaLearning
本仓库记录了我的Java学习进阶之路,涵盖了Java基础、JDK源码、JVM中的重要知识,附有代码和博客讲解,旨在提供一个Java在线共享学习平台,帮助更多的Java学习者入门进阶。

## 代码目录
+ [Java基础](https://github.com/CrowHawk/JavaLearning/tree/master/Basic-java):包括枚举、范型、反射、动态代理的用法;
+ [JNA](https://github.com/CrowHawk/JavaLearning/tree/master/JNAPointer):演示了JNA的基本用法,使用Java调用C++代码。

## 博客目录
### Java基础
+ [Java基础学习(1)——反射](https://crowhawk.github.io/2017/02/12/basic-java-reflect/)
+ [Java基础学习(2)——注解](https://crowhawk.github.io/2017/02/13/basic-java-annotation/)
+ [Java基础学习(3)——泛型](https://crowhawk.github.io/2017/02/21/basic-java-generic/)
+ [Java基础学习(4)——动态代理](https://crowhawk.github.io/2017/02/21/basic-java-proxy/)
+ [《Java多线程核心技术》读书笔记](https://crowhawk.github.io/2017/07/06/MultiThread/)

### JDK源码
+ [Java集合框架源码解读(1)——ArrayList、LinkedList和Vector](https://crowhawk.github.io/2017/08/26/collections_1/)
+ [Java集合框架源码解读(2)——HashMap](https://crowhawk.github.io/2017/08/27/collections_2/)
+ [Java集合框架源码解读(3)——LinkedHashMap](https://crowhawk.github.io/2017/08/28/collctions_3/)
+ [Java集合框架源码解读(4)——WeakHashMap](https://crowhawk.github.io/2017/08/29/collection_4/)
+ [Java集合框架源码解读(5)——TreeMap](https://crowhawk.github.io/2017/08/31/collection_5/)

### JVM
+ [深入理解JVM(1)——Java内存区域与Java对象](https://crowhawk.github.io/2017/08/09/jvm_1/)
+ [深入理解JVM(2)——GC算法与内存分配策略](https://crowhawk.github.io/2017/08/10/jvm_2/)
+ [深入理解JVM(3)——7种垃圾收集器](https://crowhawk.github.io/2017/08/15/jvm_3/)
+ [深入理解JVM(4)——如何优化Java GC「译」](https://crowhawk.github.io/2017/08/21/jvm_4/)
+ [深入理解JVM(5)——虚拟机类加载机制](https://crowhawk.github.io/2017/08/21/jvm_5/)
+ [深入理解JVM(6)——类加载器](https://crowhawk.github.io/2017/08/21/jvm_6/)

## 联系作者
[Personal Website:Crow Home](https://crowhawk.github.io/)


================================================
FILE: ReadAndShow.txt
================================================
Read And Show.

================================================
FILE: Reflect/Reflect.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
  </component>
</module>

================================================
FILE: Reflect/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Basic-Java</artifactId>
        <groupId>com.crow</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Reflect</artifactId>
    <packaging>jar</packaging>

    <name>Reflect</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


================================================
FILE: Reflect/src/main/java/com/crow/FieldReflect.java
================================================
package com.crow;


/**
 * Created by CrowHawk on 17/2/8.
 */
public class FieldReflect {
    public int a;
    private int b;
    public String str1 = "bat";
    public String str2 = "but";
    public String str3 = "bite";

    public FieldReflect(){}
    public FieldReflect(int a,int b){
        super();
        this.a = a;
        this.b = b;
    }
    @Override
    public String toString(){
        return str1 + "," + str2 + "," + str3 + "," + a + "," + b;
    }
}


================================================
FILE: Reflect/src/main/java/com/crow/ReflectTest.java
================================================
package com.crow;

import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;


/**
 * Created by CrowHawk on 17/2/8.
 */
public class ReflectTest {
    public static void main(String[] args) throws Exception{
        FieldReflect fr = refConstructor(1,2);
        System.out.println(fr.toString());
        refFieldChange(fr, "a");
        System.out.println("fr.a = " + fr.a);
        refFieldChange(fr, "str1");
        System.out.println("fr.str1 = " + fr.str1);
    }

    public static FieldReflect refConstructor(int a, int b) throws Exception{//使用反射构造器创建对象
        Class[] paralist = {int.class, int.class};
        Constructor cons = FieldReflect.class.getDeclaredConstructor(paralist);
        FieldReflect fr = (FieldReflect) cons.newInstance(a, b);
        return fr;
    }

    public static void refFieldChange(FieldReflect fr, String fieldName) throws Exception{
        //使用Field类改变类的实例域,如果是int型,全部设为3,如果是String类型,将String中的"b"改为"c"
        Field field = fr.getClass().getDeclaredField(fieldName);
        field.setAccessible(true);
        if(field.getType() == int.class){
            field.set(fr, 3);
        }
        else if(field.getType() == String.class) {
            String string = (String) field.get(fr);
            string.replace("b", "c");
            field.set(fr, string);
        }
        else {
            throw new IOException();
        }
    }
}


================================================
FILE: pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.crow</groupId>
  <artifactId>Basic-Java</artifactId>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>Enumeration</module>
    <module>Generic</module>
    <module>Proxy</module>
    <module>Reflect</module>
    <module>JNA</module>
    <module>NIO</module>
  </modules>
  <packaging>pom</packaging>

  <name>Basic-Java</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
Download .txt
gitextract_55l6bb7f/

├── .idea/
│   ├── .name
│   ├── compiler.xml
│   ├── copyright/
│   │   └── profiles_settings.xml
│   ├── encodings.xml
│   ├── misc.xml
│   ├── modules.xml
│   ├── uiDesigner.xml
│   ├── vcs.xml
│   └── workspace.xml
├── BasicJava.iml
├── Enumeration/
│   ├── Enumeration.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── EnumCoin.java
│                       └── EnumTest.java
├── Generic/
│   ├── Generic.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       └── GenericTest.java
├── JNAPointer/
│   ├── .Readme.txt.swp
│   ├── JNAPointer.java
│   ├── README.md
│   ├── callback.cpp
│   ├── cppCompile.sh
│   ├── javarun.sh
│   ├── jna-4.2.1.jar
│   └── swap.cpp
├── NIO/
│   ├── NIO.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── CopyFile.java
│                       ├── CreateArrayBuffer.java
│                       ├── CreateBuffer.java
│                       ├── MultiPortEcho.java
│                       ├── ReadAndShow.java
│                       ├── ScatterGather.java
│                       ├── SliceBuffer.java
│                       ├── TypesInByteBuffer.java
│                       ├── UseCharsets.java
│                       ├── UseFileLocks.java
│                       ├── UseFloatBuffer.java
│                       ├── UseMappedFile.java
│                       └── WriteSomeBytes.java
├── Proxy/
│   ├── Proxy.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── Advice.java
│                       ├── ImpAdvice.java
│                       └── ProxyTest.java
├── README.md
├── ReadAndShow.txt
├── Reflect/
│   ├── Reflect.iml
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── crow/
│                       ├── FieldReflect.java
│                       └── ReflectTest.java
└── pom.xml
Download .txt
SYMBOL INDEX (69 symbols across 24 files)

FILE: Enumeration/src/main/java/com/crow/EnumCoin.java
  class EnumCoin (line 7) | public abstract class EnumCoin {//Implement an Enum with a common class
    method EnumCoin (line 9) | private EnumCoin(int tag){
    method enumNext (line 13) | public EnumCoin enumNext(){
    method enumNext (line 18) | public EnumCoin enumNext(){
    method toString (line 23) | public String toString(){
    method enumNext (line 36) | public abstract EnumCoin enumNext();

FILE: Enumeration/src/main/java/com/crow/EnumTest.java
  class EnumTest (line 7) | public class EnumTest {
    method main (line 8) | public static void main(String[] args) {

FILE: Generic/src/main/java/com/crow/GenericTest.java
  class GenericTest (line 16) | public class GenericTest {
    method main (line 17) | public static void main(String[] args) throws Exception{
    method printHashmap (line 37) | public static void printHashmap(HashMap<String, Integer> hashMap){//遍历...
    method swap (line 50) | public static <T> void swap(T[] arr, int i, int j){//交换泛型数组中的任意两个元素

FILE: JNAPointer/JNAPointer.java
  class JNAPointer (line 4) | public class JNAPointer {
    type CLib (line 9) | public interface CLib extends Library{
      type OpenFunc (line 11) | public interface OpenFunc extends Callback{
        method invoke (line 12) | void invoke ( IntByReference p1);
      class FunCallBack (line 16) | public class FunCallBack implements OpenFunc{
        method invoke (line 17) | @Override
      method init (line 29) | void init(OpenFunc openfunc);
      method swap (line 30) | void swap( IntByReference p1 , IntByReference p2);
      method test (line 31) | void test();
    method main (line 34) | public static void main(String[] args) {

FILE: JNAPointer/callback.cpp
  function init (line 12) | void init(OpenFunc func){
  function test (line 17) | void test(){

FILE: JNAPointer/swap.cpp
  function swap (line 8) | void swap(int *p1,int *p2){

FILE: NIO/src/main/java/com/crow/CopyFile.java
  class CopyFile (line 11) | public class CopyFile {
    method main (line 12) | public static void main(String[] args) throws Exception {

FILE: NIO/src/main/java/com/crow/CreateArrayBuffer.java
  class CreateArrayBuffer (line 8) | public class CreateArrayBuffer {
    method main (line 9) | static public void main( String args[] ) throws Exception {

FILE: NIO/src/main/java/com/crow/CreateBuffer.java
  class CreateBuffer (line 8) | public class CreateBuffer {
    method main (line 9) | public static void main( String args[] ) throws Exception {

FILE: NIO/src/main/java/com/crow/MultiPortEcho.java
  class MultiPortEcho (line 17) | public class MultiPortEcho {
    method MultiPortEcho (line 21) | public MultiPortEcho( int ports[] ) throws IOException {
    method go (line 27) | private void go() throws IOException {
    method main (line 92) | public static void main( String args[] ) throws Exception {

FILE: NIO/src/main/java/com/crow/ReadAndShow.java
  class ReadAndShow (line 10) | public class ReadAndShow {//从文件中读取数据并打印
    method main (line 11) | public static void main(String[] args) throws Exception{

FILE: NIO/src/main/java/com/crow/ScatterGather.java
  class ScatterGather (line 11) | public class ScatterGather {
    method main (line 16) | static public void main( String args[] ) throws Exception {

FILE: NIO/src/main/java/com/crow/SliceBuffer.java
  class SliceBuffer (line 8) | public class SliceBuffer {
    method main (line 9) | public static void main(String[] args) throws Exception {

FILE: NIO/src/main/java/com/crow/TypesInByteBuffer.java
  class TypesInByteBuffer (line 8) | public class TypesInByteBuffer {//在ByteBuffer中放入不同类型的数据
    method main (line 9) | public static void main(String args[]) throws Exception{

FILE: NIO/src/main/java/com/crow/UseCharsets.java
  class UseCharsets (line 16) | public class UseCharsets {
    method main (line 17) | public static void main(String[] args) throws Exception{

FILE: NIO/src/main/java/com/crow/UseFileLocks.java
  class UseFileLocks (line 10) | public class UseFileLocks {
    method main (line 14) | public static void main(String[] args) throws Exception {//使用文件锁的示例

FILE: NIO/src/main/java/com/crow/UseFloatBuffer.java
  class UseFloatBuffer (line 8) | public class UseFloatBuffer {
    method main (line 9) | public static void main(String[] args) throws Exception{

FILE: NIO/src/main/java/com/crow/UseMappedFile.java
  class UseMappedFile (line 6) | public class UseMappedFile {

FILE: NIO/src/main/java/com/crow/WriteSomeBytes.java
  class WriteSomeBytes (line 10) | public class WriteSomeBytes {//将自定义数据写入文件
    method main (line 13) | public static void main(String[] args) throws Exception{

FILE: Proxy/src/main/java/com/crow/Advice.java
  type Advice (line 8) | public interface Advice {
    method forwardMethod (line 9) | void forwardMethod(Method method);
    method backMethod (line 10) | void backMethod(Method method);

FILE: Proxy/src/main/java/com/crow/ImpAdvice.java
  class ImpAdvice (line 8) | public class ImpAdvice implements Advice {
    method forwardMethod (line 10) | public void forwardMethod(Method method){
    method backMethod (line 15) | public void backMethod(Method method){

FILE: Proxy/src/main/java/com/crow/ProxyTest.java
  class ProxyTest (line 12) | public class ProxyTest {
    method main (line 13) | public static void main(String args[]){
    method getProxy (line 23) | public static Object getProxy(final Object target, final Advice advice){

FILE: Reflect/src/main/java/com/crow/FieldReflect.java
  class FieldReflect (line 7) | public class FieldReflect {
    method FieldReflect (line 14) | public FieldReflect(){}
    method FieldReflect (line 15) | public FieldReflect(int a,int b){
    method toString (line 20) | @Override

FILE: Reflect/src/main/java/com/crow/ReflectTest.java
  class ReflectTest (line 11) | public class ReflectTest {
    method main (line 12) | public static void main(String[] args) throws Exception{
    method refConstructor (line 21) | public static FieldReflect refConstructor(int a, int b) throws Excepti...
    method refFieldChange (line 28) | public static void refFieldChange(FieldReflect fr, String fieldName) t...
Condensed preview — 52 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (103K chars).
[
  {
    "path": ".idea/.name",
    "chars": 12,
    "preview": "JavaLearning"
  },
  {
    "path": ".idea/compiler.xml",
    "chars": 686,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <resourceExt"
  },
  {
    "path": ".idea/copyright/profiles_settings.xml",
    "chars": 74,
    "preview": "<component name=\"CopyrightManager\">\n  <settings default=\"\" />\n</component>"
  },
  {
    "path": ".idea/encodings.xml",
    "chars": 159,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\">\n    <file url=\"PROJECT\" chars"
  },
  {
    "path": ".idea/misc.xml",
    "chars": 1103,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"EntryPointsManager\">\n    <entry_points v"
  },
  {
    "path": ".idea/modules.xml",
    "chars": 282,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n   "
  },
  {
    "path": ".idea/uiDesigner.xml",
    "chars": 8792,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Palette2\">\n    <group name=\"Swing\">\n    "
  },
  {
    "path": ".idea/vcs.xml",
    "chars": 180,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping dire"
  },
  {
    "path": ".idea/workspace.xml",
    "chars": 46149,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"t"
  },
  {
    "path": "BasicJava.iml",
    "chars": 785,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true"
  },
  {
    "path": "Enumeration/Enumeration.iml",
    "chars": 868,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true"
  },
  {
    "path": "Enumeration/pom.xml",
    "chars": 896,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:sc"
  },
  {
    "path": "Enumeration/src/main/java/com/crow/EnumCoin.java",
    "chars": 829,
    "preview": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/2/12.\n */\n\npublic abstract class EnumCoin {//Implement an Enum with "
  },
  {
    "path": "Enumeration/src/main/java/com/crow/EnumTest.java",
    "chars": 282,
    "preview": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/2/12.\n */\n\npublic class EnumTest {\n    public static void main(Strin"
  },
  {
    "path": "Generic/Generic.iml",
    "chars": 868,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true"
  },
  {
    "path": "Generic/pom.xml",
    "chars": 888,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:sc"
  },
  {
    "path": "Generic/src/main/java/com/crow/GenericTest.java",
    "chars": 1947,
    "preview": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/2/16.\n */\n\n\nimport java.lang.reflect.Method;\nimport java.lang.reflec"
  },
  {
    "path": "JNAPointer/JNAPointer.java",
    "chars": 1127,
    "preview": "import com.sun.jna.*;\nimport com.sun.jna.ptr.*;\n\npublic class JNAPointer {\n\n\t/**\n\t * @param args\n\t */\n\tpublic interface "
  },
  {
    "path": "JNAPointer/README.md",
    "chars": 136,
    "preview": "# JNA Sample\n\n---\n\n**Java用JNA跨语言调用C++指针代码,在C++代码外封装一层C接口**\n**Java将C++指针映射为Pointer类**\n\n+ 先执行cppComplie.sh生成动态链接库\n+ 再执行jav"
  },
  {
    "path": "JNAPointer/callback.cpp",
    "chars": 344,
    "preview": "#include <stdlib.h>\n#include <iostream>\n\nusing namespace std;\n\nextern \"C\"\n{\n\ttypedef void (*OpenFunc) (const char*, int)"
  },
  {
    "path": "JNAPointer/cppCompile.sh",
    "chars": 156,
    "preview": "#/bin/sh\n\nCURRENT=$(dirname \"$0\")\ncd $CURRENT\nHOMEDIR=`pwd`/../..\n\ng++ callback.cpp -fPIC -shared -o libJNALib.so\ng++ sw"
  },
  {
    "path": "JNAPointer/javarun.sh",
    "chars": 145,
    "preview": "#/bin/sh\n\nCURRENT=$(dirname \"$0\")\ncd $CURRENT\nHOMEDIR=`pwd`/../..\n\njavac -cp jna-4.2.1.jar:. JNAPointer.java\njava -cp jn"
  },
  {
    "path": "JNAPointer/swap.cpp",
    "chars": 308,
    "preview": "#include <stdlib.h>\n#include <iostream>\nusing namespace std;\n\nextern \"C\"{\nvoid swap(int *p1,int *p2);\n\n void swap(int *p"
  },
  {
    "path": "NIO/NIO.iml",
    "chars": 868,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true"
  },
  {
    "path": "NIO/pom.xml",
    "chars": 880,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:sc"
  },
  {
    "path": "NIO/src/main/java/com/crow/CopyFile.java",
    "chars": 1004,
    "preview": "package com.crow;\n\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.nio.ByteBuffer;\nimport j"
  },
  {
    "path": "NIO/src/main/java/com/crow/CreateArrayBuffer.java",
    "chars": 564,
    "preview": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class CreateArrayBuffer"
  },
  {
    "path": "NIO/src/main/java/com/crow/CreateBuffer.java",
    "chars": 522,
    "preview": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class CreateBuffer {\n  "
  },
  {
    "path": "NIO/src/main/java/com/crow/MultiPortEcho.java",
    "chars": 3675,
    "preview": "package com.crow;\n\nimport java.io.IOException;\nimport java.net.InetSocketAddress;\nimport java.net.ServerSocket;\nimport j"
  },
  {
    "path": "NIO/src/main/java/com/crow/ReadAndShow.java",
    "chars": 647,
    "preview": "package com.crow;\n\nimport java.io.FileInputStream;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.FileChannel;\n\n/*"
  },
  {
    "path": "NIO/src/main/java/com/crow/ScatterGather.java",
    "chars": 2374,
    "preview": "package com.crow;\n\nimport java.net.InetSocketAddress;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.ServerSocketC"
  },
  {
    "path": "NIO/src/main/java/com/crow/SliceBuffer.java",
    "chars": 750,
    "preview": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class SliceBuffer {\n   "
  },
  {
    "path": "NIO/src/main/java/com/crow/TypesInByteBuffer.java",
    "chars": 525,
    "preview": "package com.crow;\n\nimport java.nio.ByteBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class TypesInByteBuffer"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseCharsets.java",
    "chars": 1387,
    "preview": "package com.crow;\n\nimport java.io.File;\nimport java.io.RandomAccessFile;\nimport java.nio.ByteBuffer;\nimport java.nio.Cha"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseFileLocks.java",
    "chars": 980,
    "preview": "package com.crow;\n\nimport java.io.RandomAccessFile;\nimport java.nio.channels.FileChannel;\nimport java.nio.channels.FileL"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseFloatBuffer.java",
    "chars": 521,
    "preview": "package com.crow;\n\nimport java.nio.FloatBuffer;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class UseFloatBuffer {"
  },
  {
    "path": "NIO/src/main/java/com/crow/UseMappedFile.java",
    "chars": 92,
    "preview": "package com.crow;\n\n/**\n * Created by CrowHawk on 17/9/4.\n */\npublic class UseMappedFile {\n}\n"
  },
  {
    "path": "NIO/src/main/java/com/crow/WriteSomeBytes.java",
    "chars": 707,
    "preview": "package com.crow;\n\nimport java.io.FileOutputStream;\nimport java.nio.ByteBuffer;\nimport java.nio.channels.FileChannel;\n\n/"
  },
  {
    "path": "Proxy/Proxy.iml",
    "chars": 868,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true"
  },
  {
    "path": "Proxy/pom.xml",
    "chars": 884,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:sc"
  },
  {
    "path": "Proxy/src/main/java/com/crow/Advice.java",
    "chars": 199,
    "preview": "package com.crow;\n\nimport java.lang.reflect.Method;\n\n/**\n * Created by CrowHawk on 17/2/20.\n */\npublic interface Advice "
  },
  {
    "path": "Proxy/src/main/java/com/crow/ImpAdvice.java",
    "chars": 530,
    "preview": "package com.crow;\n\nimport java.lang.reflect.Method;\n\n/**\n * Created by CrowHawk on 17/2/20.\n */\npublic class ImpAdvice i"
  },
  {
    "path": "Proxy/src/main/java/com/crow/ProxyTest.java",
    "chars": 1323,
    "preview": "package com.crow;\n\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Method;\nimport java.lang.reflect"
  },
  {
    "path": "README.md",
    "chars": 1691,
    "preview": "# JavaLearning\n本仓库记录了我的Java学习进阶之路,涵盖了Java基础、JDK源码、JVM中的重要知识,附有代码和博客讲解,旨在提供一个Java在线共享学习平台,帮助更多的Java学习者入门进阶。\n\n## 代码目录\n+ [J"
  },
  {
    "path": "ReadAndShow.txt",
    "chars": 14,
    "preview": "Read And Show."
  },
  {
    "path": "Reflect/Reflect.iml",
    "chars": 868,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=\"true"
  },
  {
    "path": "Reflect/pom.xml",
    "chars": 888,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:sc"
  },
  {
    "path": "Reflect/src/main/java/com/crow/FieldReflect.java",
    "chars": 473,
    "preview": "package com.crow;\n\n\n/**\n * Created by CrowHawk on 17/2/8.\n */\npublic class FieldReflect {\n    public int a;\n    private "
  },
  {
    "path": "Reflect/src/main/java/com/crow/ReflectTest.java",
    "chars": 1425,
    "preview": "package com.crow;\n\nimport java.io.IOException;\nimport java.lang.reflect.Constructor;\nimport java.lang.reflect.Field;\n\n\n/"
  },
  {
    "path": "pom.xml",
    "chars": 943,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLoc"
  }
]

// ... and 2 more files (download for full content)

About this extraction

This page contains the full source code of the CrowHawk/JavaLearning GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 52 files (90.4 KB), approximately 25.4k tokens, and a symbol index with 69 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!