JAVA
文章平均质量分 55
JAVA 相关知识
架构师小侯
JAVA架构师
一个热爱编程的程序员
技术路线,微服务->大数据->大模型
展开
-
hjr-JAVA 完整的说一下垃圾回收
2、多线程共享变量,在主内存里存储的同时,每个线程维护各自的虚拟内存保存该变量副本,优先操作虚拟内存的变量副本,再异步更新主内存,才是JVM内存模型把。当JVM判断堆内存空间不足的时候,会使用垃圾回收器,使用判断算法判断哪些对象可以被回收,再使用垃圾回收算法进行具体的回收操作。1、JVM分为堆内存和桟内存,堆中存放程序员创建的对象,桟存放执行的方法信息,局部变量和参数等。AB相等的内存,A用来使用,B用来把A的所有活跃对象转移并存储,然后清空A。复制,标记清除,标记整理,是用来具体做回收的算法。原创 2023-04-13 16:41:09 · 364 阅读 · 0 评论 -
hjr-JAVA 大数据关于日志数据的设计
如果我们操作json数据,因为JsonObject比Map有各种功能方法的支持,用JsonObject更好。那么问题就来了,这个json解析是用Map好还是用javabean好还是用JsonObject好呢。其中map和JsonObject都支持根据字符串取值,javabean可以反射动态取值。建议对性能没要求那么极致的情况使用javabean,因为代码清晰好维护。我们在数据湖中可能有各种各样的日志,结构名称都不一样。可以用一个拍平的json作为统一的日志结构。...原创 2022-07-21 15:30:26 · 411 阅读 · 0 评论 -
hjr-JAVA 文件服务minio部署和使用
通常我们可以把上传的文件另存为到一个专门的目录,但是缺点是不好管理。我们可以用fastdfs 但是缺点是部署太麻烦因此我们使用 minio部署1安装wget https://dl.min.io/server/minio/release/linux-amd64/miniochmod 755 miniomv minio /usr/local/binmkdir minio_data #文件都存到这里export MINIO_ROOT_USER=用户名export MINIO_ROOT_PAS原创 2021-10-09 15:59:40 · 295 阅读 · 0 评论 -
hjr-JAVA 我为什么使用了swagger
1、记得最开始和和前端数据对接是写了个word文档,对每个接口进行描述,描述字段,描述返回值2、后来有时候改成在线文档了,不用来回qq发送文件一版又一版了3、后来用了postman自动生成的描述文档,同时刻4、再后来使用的是 yapi,每次写一个接口都要在系统中维护一个,然后字段等修改还需要一直维护4、因此...原创 2021-09-10 17:57:26 · 134 阅读 · 0 评论 -
hjr-JAVA 压力测试
部分术语在压测中,有很多专业术语,现把与物联平台压测有关的常用的进行总结如下QPS 每秒处理请求数TPS 每秒处理事务数RPS 每秒发送请求数RT 相应时间并发数 = RPS * 响应时间RPS = 并发数/响应时间UV 访客数C Connection连接数Msg/s 每秒消息数量Bps 网络吞吐(字节/秒)一个英文一个字节 一个汉字两个字节压测工具介绍Jmeter 5.3常用参数解释(1)线程数线程数是很关键的一个参数,压测的时候是为了模拟真实情况很多客户端并发访问,因此原创 2020-12-11 18:51:26 · 953 阅读 · 0 评论 -
hjr-JAVA 几种常用数据类型的转化
java beanmapjsonjava bean -> json stringimport com.alibaba.fastjson.annotation.JSONField;import lombok.Getter;import lombok.Setter;import java.util.List;@Getter@Setterpublic class Alar...原创 2019-12-04 17:49:53 · 200 阅读 · 0 评论 -
hjr-JAVA 枚举的使用技巧
当我们代码中有静态常量的时候,可以把常量移动到枚举里举一个key value形式的枚举例子如 一周七天 要做七件事public enum Day{ d1("d1", "打球"), d1("d1", "玩游戏"), d3("d3", "吃饭"), d4("d4", "睡觉"), d5("d5", "指看电视"), d6("d6", "听歌"),...原创 2019-10-17 16:04:47 · 161 阅读 · 0 评论 -
hjr-JAVA 关于文件上传与解压与excel导出
<form method="post" action="url" <input type="file" name="uploadFile"/> <br/><br/> <input type="submit" value="上传"/> </form>上述前端是一个最简单的...原创 2019-10-16 19:34:03 · 193 阅读 · 0 评论 -
hjr-JAVA:SpringMVC入门
所有的java框架都是jar包,下载导入就安装好了框架,之后就是进行配置。下载http://repo.springsource.org/libs-release-local/org/springframework/spring/4.3.6.RELEASE/spring-framework-4.3.6.RELEASE-dist.zip上面的链接复制到浏览器,两个版本号自行更改。...原创 2017-02-09 15:39:28 · 317 阅读 · 0 评论 -
hjr-JAVA:一个jsp页面的建立
className代指任意类名基本知识Tomcat配置官网下载后解压到一个位置打开Eclipse/Myeclipsewindow->preferences 搜索tomcat,选对应版本然后配置一下路径右键项目->运行 或 上方图标运行项目结构需要了解的有两个文件夹src和WebRoot:src 存放servelet文件,先建立包,再新建类...原创 2017-02-10 16:12:43 · 468 阅读 · 0 评论 -
hjr-JAVA:SpringMVC进阶
URL在view中,每个文件夹对应一个网站的模块,比如user,这样就构成了路径view/user,而user里面可能也有增删改查四个页面 路径又变成view/user/list或view/user/updata… 这个也是浏览器url的后缀而这些路径通过@RequestMapping定义://这里的@RequestMapping("/user")和下面的("/list")反应了u...原创 2017-02-13 00:35:21 · 373 阅读 · 0 评论 -
hjr-java源码:HashMap
理解散列算法:把多个数据用少量数据标记出来hashing(哈希):标记是hashcode的散列算法HashMap的结构是包含多个HashCode的数组,每个HashCode对应一个Bucket(桶),每个桶是一个LinkList(链表),链表里面存储的是多个Entry(键值对+next+hash值)HashMpa.put(对象)对象就是一个Entry,程序员控制键值对的内容,nex...原创 2019-07-04 11:40:23 · 198 阅读 · 0 评论 -
hjr-JAVA:J2EE项目架构
业务定义业务功能当想要添加功能时,先新建一个服务包,包里面建一个服务接口,服务里面先对功能进行定义。实现业务功能接下来写服务的实现,新建一个实现包,包里面新建一个类写一个类实现之前建的服务接口,可以继承接口后直接点击添加未实现的方法自动填充(所有的业务代码最好都写到这里)。上面两条是一一对应的数据数据库定义数据库功能我们要使用数据库,新建一个...原创 2017-03-15 21:09:57 · 359 阅读 · 0 评论 -
hjr-JAVA:Struct2+Hibernate
SSHStruts(Struts MVC)+Spring+Hibernatejava beanjava bean就是满足如下标准的java 类 1. 所有属性为private 2. 提供默认构造方法 3. 提供getter和setterStruct2导包+建类+建jsp+配置XML使用步骤用(My)Eclipse新建一个动态WEB项目,Buil...原创 2017-01-24 20:44:00 · 412 阅读 · 0 评论 -
hjr-JAVA JVM调优
理解JVM 执行顺序 : class文件-》类装载器 - 》内存区-》执行引擎类加载器采用parent模型避免父子加载器重复加载,主要包含,java内部库加载器-》java扩展类库加载器-》程序员代码类加载器-》程序员自定义的类加载器其中内存区主要包含 方法区 虚拟机栈 本地方法栈 堆 程序计数器内存分为静态内存(方法区,栈)和动态内存(堆),静态内存回收方式是固定的,GC指的是动态...原创 2019-07-24 11:02:51 · 330 阅读 · 0 评论 -
hjr-JAVA Redis使用详解
使用redis是KV型的内存数据库,在java中使用Redis,需要在Pom中引用Jedis包,之后新建Config类进行基本配置,在使用处例化Jedis,之后对Redis进行各种操作常用数据结构String 、Set 、Sort Set、Hash、List、Set持久化机制RDB(默认):指定的时间间隔内将内存中的数据集快照写入磁盘,会生成dump.rdb文件,重启后加载改文件...原创 2019-07-29 09:56:12 · 246 阅读 · 0 评论 -
hjr-JAVA :多线程锁与分布式锁与分布式事务
多线程锁死锁死锁分为两种,一个线程获取到锁,没释放的时候再次获取该锁,造成死锁可以通过可重入锁避免可重入锁:线程获取一个资源的锁,可以再次获取该资源的锁,建立一个标志数,没获取一次,标志数加一,每释放一次,标志数减一,标志数为0,解锁线程a获取资源1的锁同时等待资源2,线程b获取资源2的锁同时等待资源1,这样线程a和b进入死锁可以通过修改资源访问顺序的方式避免死锁,把线程a和...原创 2019-07-08 16:49:07 · 1216 阅读 · 0 评论 -
hjr-java源码: SimpleDateFormat
使用单例,因此只能getInstance而不能直接newgetInstance:做一个判断,如果已经存在则直接获取对象,不存在会new 一个对象HashMap:数组+链表的结构equals :内部重写了对Interger的处理,会自动转化为int,因此Interger a=5,int b = 3,用equals比较后相等。...原创 2019-07-25 10:01:34 · 197 阅读 · 0 评论 -
hjr-JAVA SpringMVC+Mybatis-generate 模型设计
控制器接收参数可以用 public WarpJson fun(@RequestBody ModelVo modelVo,@RequestParam("id") String projectId,Integer page, Integer size){ ModelDTO modelDTO = mapper.query(); }此处 @RequestBody 和 @RequestPar...原创 2019-09-11 17:11:55 · 189 阅读 · 0 评论 -
hjr-JAVA:JAVA环境变量配置与运行第一个JAVA程序
没什么好说的,记住这三句话就行JAVA_HOMEC:\Program Files\Java\jdk1.6.0_10PATH;%JAVA_HOME%\bin;CLASSPATH (注意此处前面有个小数点).;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;下载完成后双击安装包,然后一直下一步就行...原创 2016-06-17 15:03:08 · 413 阅读 · 0 评论 -
hjr-JAVA:Spring+Mybatis
Spring控制反转(IOC)注册服务@Autowired private IUserService iUserService;先新建一个服务包,里面写一个某种功能的接口IFun建一个业务包,里面有多个业务的类实现IFun接口,如Fun1和Fun2,还有一个工厂工厂构造函数gc(对象 dx){}当依赖注入后,直接dx.fun就执行不同的功...原创 2017-03-21 09:14:17 · 361 阅读 · 0 评论 -
hjr-JAVA:一种基于基类的后台架构
以前经常用三个包,controller,service,impl,model写java后台 model存放各种数据模型,service存放每个模型对应的服务接口,impl存放每个服务的实现,controller存放路由与逻辑。 现在使用基类的方式,只保留model和controllermodel首先,新建一个Baseinfo,存放一些通用的字段与对应的getter、setter,字...原创 2017-07-26 16:59:00 · 297 阅读 · 0 评论 -
hjr-JAVA 多线程
基础多个线程访问一个共享数据时,加锁(事务)使其按顺序访问,是线程安全的多个线程访问一个共享数据时,没锁,可能出Bug,是线程不安全的继承Thread类或实现Runable接口 可以开启新线程。Thread t = new Thread();是例化一个新线程对象,多次执行会例化多个新线程对象,t.start()是开启一个新线程,代码会执行该线程里面的内容同时继续执行下面的代码,多次...原创 2019-03-28 16:43:31 · 189 阅读 · 0 评论 -
hjr-JAVA:本地模拟线上环境和重写
本地模拟线上环境打开host文件(C:\Windows\System32\drivers\etc),在最下面新增127.0.1.1 xx.com 这样在浏览器输入xxx.com就相当于输入 127.0.1.1打开apache的(apache\conf\extra) httpd-vhosts.conf 文件 在最下面新增<VirtualHost *:端口号> ...原创 2017-08-29 10:12:14 · 516 阅读 · 0 评论 -
hjr-JAVA:springboot-单元测试
新建Junit Test Case文件,单元测试有时要加载配置文件,注意两个注解@RunWith(SpringRunner.class)@SpringBootTestpublic class XXX{ @Autowired private XXX xxx; @Test public void test() { xxx.方法(); ...原创 2017-08-18 17:17:26 · 266 阅读 · 0 评论 -
hjr-Eclipse与MyEclipse乱码问题解决
Eclipse与MyEclipse各种编码设置窗口-->首选项-->常规-->工作空间 在左下角把编码改成UTF-8窗口-->首选项-->常规-->内容类型 一个一个子选项点开,在下方把所有编码都改成UTF-8...原创 2016-06-14 21:49:00 · 342 阅读 · 0 评论 -
hjr-JAVA:JAVA连接MySql
先安装wampserve软件,就是这个,已经安装好Myaql的可以跳过安装步骤先双击进入这个界面点击next进入这个界面选择I accept the agreement点击next 进入选择路径界面点击Browse...选好路径点击next然后一直next直到安装完成启动wampserve可以看到右下角出现绿色图的图标,刚启动时不是绿...原创 2016-06-17 15:24:12 · 590 阅读 · 0 评论 -
hjr-JAVA:springboot发布
java项目发布可以直接打包成war包,然后放到tomcat的webapps文件夹下,然后直接访问 springboot可以如上,也可以打包成jar包,然后用java -jar xxx.jar 指令执行 打包war包直接导出就可以,打包jra包要用maven 特别需要注意的是打包jar包不会自动包含webapp里面的文件,所以访问后可能一直都是404,需要在pom里指定 <...原创 2017-11-24 10:41:39 · 223 阅读 · 0 评论 -
hjr-JAVA:Spring-boot和MQ-ActiveMQ +JMS
Spring-bootspring-boot可以简化配置文件 首先在pom中写<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http0://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org...原创 2017-07-14 16:43:45 · 1394 阅读 · 0 评论 -
hjr-JAVA:J2EE Maven项目环境配置
下载maveneclipsejdktomcatsvn插件 以上软件皆为免费,直接官网下载即可,版本全用最新的或者使用公司要求版本 其中svn 可以安装最新版,eclispe->帮助->安装新软件-添加->名称任意,网址http://subclipse.tigris.org/update_1.10.x->全选->同意协议->等待安装完成 ...原创 2017-03-20 11:50:00 · 415 阅读 · 0 评论 -
hjr-JAVA:maven打包springboot和springmvc
先在resource文件夹里面新建三个文件夹,dev,test,prod,然后把同名配置文件做成三份,分别放到里面,通用配置文件放到最外面。一般我们springMVC项目打包war包 <profiles> <profile> <id>dev</id><!--执行打包命令时将使用此处的id进行定位--> <prop...原创 2019-03-20 17:50:51 · 253 阅读 · 0 评论 -
hjr-JAVA:跨域
有时可能本地正常的项目放到服务器报跨域相关错误前端浏览器报 Access-Control-Allow-Origin 相关错误两种:接口访问(post,get)和静态资源请求都可能报错首先,写一个拦截器拦截所有请求,请求就是request,然后在返回response添加头部 PrintWriter out = response.getWriter(); ResourceB...原创 2019-02-22 14:49:29 · 213 阅读 · 0 评论 -
hjr-JAVA:RabbitMQ
Centos7安装安装yum --enablerepo=epel -y install rabbitmq-serversystemctl start rabbitmq-server开启Web管理后台(http://ip:15672/ )rabbitmq-plugins enable rabbitmq_management操作用户rabbitmqctl add_user lin...原创 2017-08-18 14:36:31 · 320 阅读 · 0 评论 -
hjr-JAVA:WEB支持任意格式视频播放
web浏览器目前用h5 标签即可,只支持特定编码的mp4。 用户很多时候不会转码操作,所以在上传的时候,应在在线自动转码 上传资源一般都存到第三方,存到自己服务器太占空间,在上传同时把视频在线转码为web mp4即可,比如阿里,七牛都有这种服务 如七牛: 建议上传部分用纯前端实现,包括分片上传,只需设置一个参数即可var uploader = Qiniu.uploader({ ...原创 2018-02-02 12:48:06 · 1709 阅读 · 0 评论 -
hjr-JAVA:构建一个大型项目
IDE使用idea,举例一个springclould 微服务系统基础项目包含后台管理,前台官网,h5系统,移动端(android/ios)接口 1.在git或svn新建一个空项目,下载到本地 2. 打开idea,把空项目检出,建一个pom,其中用如下描述项目模组关系<modules> <module>module1</module&...原创 2018-03-28 11:57:44 · 651 阅读 · 0 评论 -
hjr-SpringBoot:spring boot 打包jar包发布
发布方式spring boot发布方式有两种,经典的war包发布和jar包发布,这里介绍下jar包发布流程流程打开idea,点击右上角,运行左侧的下拉框,选择edit configurations点左上角加号新增 Maven,在右侧配置参数,Working directory设置为项目路径,command line 输入clean package点击运行,等待success,在项目目录...原创 2018-09-18 16:47:53 · 212 阅读 · 0 评论 -
hjr-SpringBoot:spring boot shiro
先添加依赖 &lt;dependency&gt; &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt; &lt;artifactId&gt;shiro-spring&lt;/artifactId&gt; &lt;原创 2019-01-25 16:43:21 · 182 阅读 · 0 评论 -
hjr-SpringBoot:tomcat 发布 war 包
tomcat 软件安装目录下有个webapp文件夹webapp文件夹下面有个ROOT文件夹现在我们把springmvc项目打包成一个war包idea -》build -》build structure-》选择war包即可打包项目,之后再target文件夹下面可以看到war包然后war包放的位置放到webapp文件夹下运行tomcat,abc.war 会自动解压项目访问路径local...原创 2019-02-20 15:55:53 · 152 阅读 · 0 评论 -
hjr-SpringBoot:springboot 与 spring版本 与 mongodb spring-data和注入bean的方式
版本用mongodb对版本进行解释比较下面三个maven pom依赖1、spring-boot-starter-data-mongodb --- springboot2、spring-data-mongodb --- spring3、mongo-java-driver --- 普通java包上面三种方式都可以实现maven引用mongodb驱动 jar包。1的特点是不需要...原创 2019-03-13 17:42:10 · 4038 阅读 · 0 评论 -
hjr-SpringBoot: webservice
如果你用springboot时遇到了webservice启动成功了,但是其他的接口却变404了配置文件可以参考下文webservice有别于控制器里的api同一个端口,可以同时发布webservice服务和普通api可以这么建项目com.xxx.xxx–controller–webservice其中controller文件夹里都是api接口webservice文件夹里都是webs...原创 2019-05-15 13:24:25 · 231 阅读 · 0 评论