—考核小结—

2024-08-26 23:44
文章标签 考核 小结

本文主要是介绍—考核小结—,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

线程控制

public class Main extends Thread {Class lock = Main.class;private static int num = 0;private final int threadId;private final char c;public Main(int threadId, char character) {this.threadId = threadId;this.c = character;}public void run() {while (true) {synchronized (lock) {while (num % 3 != threadId) {try {lock.wait();} catch (InterruptedException e) {Thread.currentThread().interrupt();}}System.out.print(c);num++;lock.notifyAll();}}}public static void main(String[] args) {Thread t1 = new Main(0, 'f');Thread t2 = new Main(1, 'j');Thread t3 = new Main(2, 'w');t1.start();t2.start();t3.start();}
}

原本是想通过wait()实现顺序控制,但发现只能控制一个线程和其他两个线程的相对有序,不能同时保证三个线程的有序,于是想到了让三个线程抢同一个资源,通过targeid和id来保证线程的有序性,如果两个值不相等则释放资源,直到相当id++,就保证了线程有序。

并发安全的map

当时是手写了一个map,不过由于时间原因,只完成了增加和查询功能,修改和查询未能完成,后来经过提醒,想到了可以直接在map外层包裹一层synchronized

import java.util.*;public class map<K,V> extends HashMap<K,V> {private final Object lock = new Object();@Overridepublic V put(K key, V value) {synchronized (lock) {return super.put(key, value);}}@Overridepublic V get(Object key) {synchronized (lock) {return super.get(key);}}@Overridepublic V remove(Object key) {synchronized (lock) {return super.remove(key);}}@Overridepublic void clear() {synchronized (lock) {super.clear();}}@Overridepublic boolean containsKey(Object key) {synchronized (lock) {return super.containsKey(key);}}@Overridepublic boolean containsValue(Object value) {synchronized (lock) {return super.containsValue(value);}}@Overridepublic int size() {synchronized (lock) {return super.size();}}@Overridepublic boolean isEmpty() {synchronized (lock) {return super.isEmpty();}}
}

刚开始是写成object的,后来改为了泛型,实现了进一步解耦。

简单web服务器

要求:

1.更改Tomcat端口号为8888

2.Mysql表结构id , name ,password , time,字段自己决定

3.访问路径localhost:8888/fjw

4.Post:localhost:8888/fjw/register当前端传来一个name,password保存在数据库中,并且time为创建时间 Get:localhost:8888/fjw/getUser ,当前端发送get请求,返回这个表里面所有的用户信息

1.更改端口号

1.Tomacat安装目录下去server.xml文件中找到Connector标签将其port改为8888

<Connector port="8888" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

我当时是直接在idea上改的端口号,想到去配置文件中更改但是不知道在哪里。

2.创建表结构,use类

CREATE SCHEMA mydatabase;USE mydatabase;CREATE TABLE users (id INT,name VARCHAR(50),password VARCHAR(50),time TIMESTAMP
);

这里我使用了dategrip数据库可视化工具,如果使用其他工具或终端操作,需要将

CREATE SCHEMA mydatabase;改为CREATE DATABASE mydatabase;

package com.lbdking.pojo;
public class User {private int id;private String name;private String password;private String time;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name){this.name = name;}public void setPassword(String Password) {this.password = password;}public String getPassword() {return password;}public void setTime(String time) {this.time = time;}public String getTime() {return time;}
}

3.配置数据库连接


<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/user_db"/><property name="username" value="root"/><property name="password" value="123456"/>  <!-- 填写你密码啊,123456不是我密码 --><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
</bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.yourpackage.mapper"/>
</bean>

Mapper层

UserMapper.java

public interface UserMapper {void insertUser(User user);List<User> getAllUsers();
}

UserMapper.xml

<mapper namespace="com.yourpackage.mapper.UserMapper"><insert id="insertUser">INSERT INTO user (name, password, time) VALUES (#{name}, #{password}, #{time})</insert><select id="getAllUsers" resultType="com.yourpackage.model.User">SELECT * FROM user</select>
</mapper>

Service层

user接口

UserService.java

public interface UserService {void registerUser(User user);List<User> getAllUsers();
}

对应接口继承实现功能调用

UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic void registerUser(User user) {userMapper.insertUser(user);}@Overridepublic List<User> getAllUsers() {return userMapper.getAllUsers();}
}

Controller层

UserController.java

@RestController
@RequestMapping("/fjw")
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/register")public String registerUser(@RequestParam String name, @RequestParam String password) {User user = new User();user.setName(name);user.setPassword(password);userService.registerUser(user);return "User registered successfully";}@GetMapping("/getUser")public List<User> getAllUsers() {return userService.getAllUsers();}
}

功能实现,@RequestMapping注解实现路径更改内层方法使用@PostMapping(“/register”)和@GetMapping(“/getUser”)实现post方法和get方法提交。

这篇关于—考核小结—的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110021

相关文章

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

Linux环境配置中问题小结

在Linux环境配置中,遇到问题首先猜测: 1、是否是权限问题; 2、软连接是否配置;

long long,_int64使用小结

前言:   在16位环境下,int/unsigned int 占16位,long/unsigned long占32位   在32位环境下,int占32位,unsigned int占16位,long/unsigned long占32位 何时需要使用:   long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647,而unsigned范围是[0,2^32),

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

Android 源码中jni项目 加载so目录小结

Android 源码中jni项目 加载so目录小结 文章目录 Android 源码中jni项目 加载so目录小结一、前言二、so目录验证测试1、jni so文件错误报错(1)报错1 - 未找到so文件:(2)报错2 - so文件中未找到native方法: 2、验证的几种情况(1)apk下面的 lib/arm64/ 放置正确的so文件(2)apk下面的 lib/arm64/ 放置错误的so文

如何招聘一个外贸SEO推广人员以及如何做后期的KPI考核

随着国内SEO行业的日渐成熟,越来越多的外贸公司,开始招聘专门的SEO人员,如果你去招聘网站上搜“外贸SEO”,会发现很多这样的公司。 总的来说,SEO的薪资水平还是不低的,深圳外贸行业SEO人员的平均月薪在8K以上。 8K的月薪,对于一般的外贸企业而言,其实压力不小,如果招来的人,能力不行,不能给你们公司创造价值,随便做个三个月,三四万的成本消耗掉了。钱还是其次,时间窗口可能就错过了。

maven打包成可执行的jar,以及读取配置文件问题小结

文章来源 https://blog.csdn.net/chasonsp/article/details/88852353 折腾的几天,使用maven打包后发现了问题,首先是打包的配置文件读取问题,使用getResource().getPah()会发现在访问jar包的文件时,路径里会有感叹号(杠杠滴~~)是这样的 …jar!.. 经过不断的查找资料及反复验证后,终于找到了可行的方法:

【硬刚大数据】Flink在实时在实时计算平台和实时数仓中的企业级应用小结

欢迎关注博客主页:https://blog.csdn.net/u013411339 欢迎点赞、收藏、留言 ,欢迎留言交流!本文由【王知无】原创,首发于 CSDN博客!本文首发CSDN论坛,未经过官方和本人允许,严禁转载! 本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的面试部分补充。 大数据领域自 2010 年开始,以 Hadoop、Hive 为代

Kafka常见问题学习路径源码阅读小结 | 写在Kafka3.0发布之际

严格来说,这篇文章也不是今天写的。是之前断断续续写在了几篇文章中。 2021年9月21日,随着Kafka3.0的发布,Kafka在「分布式流处理平台」这个目标上的努力进一步得到加强!Kafka不满足于「消息引擎」的定位,正式基于这样的定位,Kafka 社区于 0.10.0.0 版本正式推出了流处理组件 Kafka Streams,也正是从这个版本开始,Kafka 正式"变身"为分布式的流处理平台

C++中继承及virtual小结

一、继承基础知识 C++中的继承 1.1继承的基本概念 类与类之间的关系 has-A,包含关系,用以描述一个类由多个“部件类”构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类。 use-A,一个类使用另一个类,通过类之间的成员函数相互联系,定义友元或者通过传递参数的方式来实现。(和组合不同) is-A,即继承关系,关系具有传递性。 继承的特点 子类拥有