JAVA随笔-1

注意:以下内容是个人自学java的随笔,一般人是看不懂我在写什么的,哈哈哈!!!

--JDBC连接云服务mysql: 

1.添加mysql-connector-java.jar

2

 ----------------------------------------------------------------------------

eclipse要连接到阿里云服务器上的mysql,宝塔面板和服务器本身两个都要放行3306端口,还有cj.jdbc.Driver中的username&&password是对应上宝塔面板上每个数据库的,同时,在宝塔面板上建数据库时要选择utf8mb4

-----------------------------------------------------------------------------------

---@Test----eclipse自带有jUnit,不用另外导入其jar包

---微服务模块:建module-改POM-写YML-主启动-业务类

---yml文件要注意冒号后面的空格,比如,name: xxx,还有比如mybatis:前面不能有空格,不然会出      现Invalid bound statement (not found)问题

---对于启动tomcat时,console那里乱码问题解决方法:tomcat安装目录-conf-logging.properties       中的java.util.logging.ConsoleHandler.encoding = UTF-8改成GBK就行了

---在新建一个微服务module后,要记得在module右键,maven-reload project,不然import导包            时,看起来好像依赖没成似的

---restTemplate(url,RequestMap,ResponseBean.class)这三个参数分别代表REST请求地址,请求      参数,HTTP响应转换被转换成的对象类型

---pom.xml中依赖报红的话,Maven-reload project&&后边MAVEN,点击刷新那个图标

----------------------------------------------------------------------

Eclipse中创建动态project时,启动tomcat时可能会选不了tomcat8.5版本,那是因为此项目目录中的.settings文件里的org.eclipse.wst.common.project.facet.core.xml中的"jst.web" version="3.0"版本太高了,改低一点就行了

-------------------------------------------------------------

阿里云中的mysql -uroot -p -h127.0.0.1这个是在当你把自带的mysql数据库中的权限改了之后(host中的localhost改成%),常规登陆的会出现空密码登陆,而且自带的mysql数据会看不见,此时用这个方法登陆

--------------------------------------------------------------------

  • --首次建立maven项目(父类pom)
  • ----setting-->editor-->file encoding三个改成UTF-8,同时transparent打勾
  • ----setting-->build-->compiler-->annotation processors中annotation processors打勾
  • ----setting-->build-->compiler-->java complier选JDK1.8
  • ----setting-->editor-->file types中的ignored files and folders添加*.idea和*.iml(这个看个人需求)
  • pom.xml中添加<packing>pom</packing>以及添加统一jar包管理和<dependencyManagent>,覆盖原来没有的内容
  • 删除src文件

 ---------------------------------------------------------------------------

  • eureka.client.register-with-eureka=false
  • eureka.client.fetch-registry=false
  • 在application.yml中加入上面两句,因为启动时会报警connection refused,同时还包含eureka的端口,意思是不让eureka自注册

-----------------------------------------------------------------------------------------

idea配置tomcat: run-edit configuration,左上角选择tomcat local,然后还要在deployment中点击+号,选择artifacts,如果没有这个,先点击project structure,左侧artifacts,然后点击中上角+号,选择web application:exploded-from modules,此时会自动选择当前工程,然后在返回deployment点+号,选择artifacts,自动出来一个文件选项 

------------------------------------------------------------------------

 Maven跳过test步骤

-----------------------------------------------------------------------

 如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行。 @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);使用@RequestBody接收数据时,一般都用POST方式进行提交。 只不过RequestBody 接收的是请求体里面的数据;而RequestParam接收的是key-value里面的参数,所以它会被切面进行处理从而可以用普通元素、数组、集合、对象等接收)。即:如果参数时放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到; 如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或 则形参前 什么也不写也能接收。

-----------------------------------------------------

devtools(热部署)步骤:
1.在子pom.xml中加入      
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
 </dependency>
2.在父pom.xml中加入
<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.5.6</version>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
    </plugins>
  </build>
3.idea中setting-build-compiler中automatically,display,build,compile四个打勾
4.旧版本idea--按住ctrl+alt+shift+/,弹出选择registry,compiler.automake.allow.when.app.running打勾。
新版本idea---setting-advanced setting-compiler中allow auto-make打勾

完成上面四个步骤后,热部署就好了,后面修改了代码后会自动重启主程序

-----------------------------------------------------------

泛型:

如果静态方法要使用泛型的话,必须将静态方法也定义成泛型方法 。

  • public void showKey(Gerner(? extends Number>)  gen){.............}
  • 上面这个方法中的参数里的泛型意思是只能是Number的子类

 Public class Student<T>(){

        public <T> void show(T t){....}

}方法里的泛型T可以和类的泛型T不一样

----------------------------------------------

zookeeper云连接:

  • 1.命令:docker exec -it zooID /bin/bash,进入容器
  • 2.命令:cd bin,然后ls,会看到zkCli.sh等等
  • 3.命令:./zkCli.sh -server 127.0.0.1:2181连接zookeeper
  • 此时就能看到和视频一样的节点
  • 常用命令:docker ps
---------------------------------------------

zookeeper:

  • 1.一般安装奇数台服务器,因为超过半数就可以正常运行
  • 2.命令ll,查看当前目录下,而cd只是进入了这个目录,并看不到内容的
  • 3.命令mv name1 name2,把1名字改成2
  • 4.命令vim xx,打开这个文件
  • 5.第一次选举时,服务器ID:myid最大的当leader
  • zxID:事务ID
  • Epoch:每个leader任期的代号
  • leader重新选举时,从Epoch>zxID>SID顺序来,谁大谁是leader
  • zookeeper安装

  • 1.命令rz:跳出的框中选择需要的文件
  • 2.解压:tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
  • 3.进入到module下,mv改名
  • 4.进入改名后文件下的conf文件,把zoo_sample.cfg改名成zoo.cfg
  • 5.vim zoo.cfg,同时在xshell当前选项卡上右键复制会话,在新会话当中,在zookeeper安装目录下,新建zkData文件夹,然后把这个完整路径复制,到zoo.cfg文件中,data_Dir=/tmp/换成这个路径,记得先按i才可以更改,然后esc,然后:wp保存并退出
  • 6.启动zookeeper服务端:bin/zkServer.sh start,这里记住,如果已经在Bin目录下的时候,就是./zkServer.sh.start了,jps查看进程,如果没有QuorumPeerMain进程,那么那么看看你的zookeeper版本是不是3.5以后版本,是的话,可能是端口被占用了,看其他人评论是3.5以后会自动启用8080端口,在zoo.cfg中添加一行,admin.serverPort=其他没有被占用的端口号,就可以启动成功
  • 7.bin/zkCli.sh启动客户端:ls /查看当前节点    quit退出  zkServer.sh status查看状态
  • zoo.cfg参数定义 

  • ticktime:服务器和客户端的心跳时间,单位毫秒
  • initLimit:服务器中leader和follw初始连接时可以忍受的最大心跳次数
  • syncLimit:服务器中leader和follw已经连接后可以忍受的最大心跳次数,如果大于这个次数,则leader会认为这个follow已经死亡,会删掉这个follow
  • dataDir:存储zookeeper的数据,默认的路径会定期删除数据,所以要自定义

 zkCli.sh客户端相关参数:

  • ls -s / 进入看到相关参数
  • cZxid = 0x0:创建节点的事务ID
  • mZxid = 0x0:最后更新的事务ID
  • PZxid = 0x0:最后修改的子节点ID
  • cversion = -1:子节点的变化号,其修改次数
  • ephemeralOwner = 0x0:如果是临时节点,这个就是拥有者的sessionID,否则就是0

 zkCli.sh客户端相关命令:

  • create /name "content":创建节点name,内容为content,如果create后面有-s代表这个子节点带有序号,带序号就是可以重复创建,只是结果带有序号而已,如果create后面有-e代表是临时节点,quit退出后这个临时节点就没了,-s是有序号的节点
  • get -s  /znode:获取该节点的内容,如果是低版本的zookeeper,-s要去掉
  • set /xxx/xxx “xx”:修改这个子节点的内容
  • get -w /path:监控这个节点的值的变化。注意,这里只监听一次,在次变化的话监听不到的
  • ls -w /path:监控子节点的变化。注意,这里只监听一次,在次变化的话监听不到的
  • delete /xx:删除,deleteall /xx:删除它以及 其下面的所有子节点
  • stat /xx:查看节点状态

 阿里云zookeeper集群:

  • zookeeper解压到zookeeper文件夹,
  • 新建zookeeper1,2,3三个文件夹,然后cp -r zookeeper/.  zookeeper1,2,3,也就是分别复制到三个文件夹
  • 分别创建zkData文件夹,在其里面新建myid文件,命令echo xx >myid,内容xx分别是1,2,3
  • 修改conf下的zoo.cfg以及其里面的clientPort分别定义,还有添加
  • server.1=127.0.0.1:2882:3881
    server.2=127.0.0.1:2883:3882
    server.3=127.0.0.1:2884:3883
  • 分别启动三个zookeeper
     

 阿里云zookeeper集群批量启动:

  • 在home下新建bin目录,进入bin目录,vim zkServer-start.sh,内容如下:
  • echo "starting...."
    for i in 1 2 3 
    do
    cd /opt/module/.../zookeeper-3.5.7-0$i/bin
    ./zkServer.sh start
    done
  • 完成后保存退出后同样方式vim zkServver-stop.sh,内容为stop
  • 添加如下两条命令,就为了让其成为可执行
  • chmod u+x zkServer-start.sh
    chmod u+x zkServer-stop.sh
  • 进入home/bin,执行./zkServer-start.sh就可批量启动
  • 为了方便在任何地方都可以执行脚本,将脚本的路径加入到/etc/profile的path中
    在profile文件末尾加入刚才编写的脚本的位置:
  • #zookeeper-cluster shell script position
    export PATH=$PATH:/home/bin/

--------------------------------------

阿里云安装consul

  • wget https://releases.hashicorp.com/consul/1.7.1/consul_1.7.1_linux_amd64.zip
  • unzip xxx.zip
  • ./consul agent -dev -ui -node=consul-dev -client=阿里云内网IP

-----------------------------------------

linux常用命令:

  • pwd:查看当前路径
  •  cd /:切换到根目录
  • :q!强制退出vim  :wq保存后退出 
  • rm -rf zoo.cfg删除文件
  • cp -r dir1 dir2复制文件目录,-r用于复制目录
  • mkdir -p dir1/dir2/dir3代表创建多个目录
  • echo xx >a.txt代表把xx写入a.txt文件中
  • cat myid代表读取myid文件中的内容
  • chmod +x:文件变成可执行文件,chmod 777 file:改变文件权限
  • jps:查看进程
  • systemctl stop/start firewalld打开关闭防火墙

 -------------------------------------------------------------------

idea相关:

  • ctrl+p:参数提示
  • alt+Enter:报红处理方式提示
  • ctrl+alt+F:某个变量升级为全局变量

 ---------------------------------------------------------------

2021-12-11 21:08:38,926 WARN [org.apache.zookeeper.ClientCnxn] - Client session timed out, have not heard from server in 9068ms for sessionid 0x0
  2021-12-11 21:08:38,926 INFO [org.apache.zookeeper.ClientCnxn] - Client session timed out, have not heard from server in 9068ms for sessionid 0x0, closing socket connection and attempting reconnect
  
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /sandee1

  • 这个报警是因为sessionTimeout设定值,也就是超时了,把其值改大点即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值