中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

保定工程建設(shè)信息網(wǎng)站最新的疫情防控政策和管理措施

保定工程建設(shè)信息網(wǎng)站,最新的疫情防控政策和管理措施,做數(shù)學(xué)網(wǎng)站,福州網(wǎng)站制作服務(wù)專欄:高并發(fā)---分布式項(xiàng)目 億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目搭建 一 (商家端與用戶端功能介紹、項(xiàng)目技術(shù)架構(gòu)、數(shù)據(jù)庫(kù)表結(jié)構(gòu)等設(shè)計(jì)) 億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目搭建 一 (商家端與用戶端功能介紹、項(xiàng)…

專欄:高并發(fā)---分布式項(xiàng)目?

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目搭建 一 (商家端與用戶端功能介紹、項(xiàng)目技術(shù)架構(gòu)、數(shù)據(jù)庫(kù)表結(jié)構(gòu)等設(shè)計(jì))

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目搭建 一 (商家端與用戶端功能介紹、項(xiàng)目技術(shù)架構(gòu)、數(shù)據(jù)庫(kù)表結(jié)構(gòu)等設(shè)計(jì))_童小純的博客-CSDN博客

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 二(Zookeeper、Docker、Dubbo-Admin等搭建工作

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 二(Zookeeper、Docker、Dubbo-Admin等搭建工作_童小純的博客-CSDN博客

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 三(通用模塊、商品服務(wù)模塊、后臺(tái)API模塊、IDEA忽略文件顯示等開發(fā)工作

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 三(通用模塊、商品服務(wù)模塊、后臺(tái)API模塊、IDEA忽略文件顯示等開發(fā)工作_童小純的博客-CSDN博客

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 四(Dashboard服務(wù)、設(shè)置統(tǒng)一返回格式與異常處理、Postman測(cè)試接口 )

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 四(Dashboard服務(wù)、設(shè)置統(tǒng)一返回格式與異常處理、Postman測(cè)試接口 )_童小純的博客-CSDN博客

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 五 (用戶服務(wù)模塊、管理員模塊功能 增、刪、改、查 、分頁(yè),前端工程)

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 五 (用戶服務(wù)模塊、管理員模塊功能 增、刪、改、查 、分頁(yè),前端工程)_童小純的博客-CSDN博客

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 六(編寫角色管理、用戶權(quán)限(Spring Security認(rèn)證授權(quán))、管理員管理等模塊)

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 六(編寫角色管理、用戶權(quán)限(Spring Security認(rèn)證授權(quán))、管理員管理等模塊)_童小純的博客-CSDN博客

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 七(品牌模塊、商品類型模塊等開發(fā))

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 七(品牌模塊、商品類型模塊等開發(fā))_童小純的博客-CSDN博客

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 八(安裝FastDFS、安裝Nginx、文件服務(wù)模塊、文件上傳功能、商品功能與秒殺商品等功能)

億級(jí)高并發(fā)電商項(xiàng)目-- 實(shí)戰(zhàn)篇 --萬(wàn)達(dá)商城項(xiàng)目 八(安裝FastDFS、安裝Nginx、文件服務(wù)模塊、文件上傳功能、商品功能與秒殺商品等功能)_童小純的博客-CSDN博客

👏作者簡(jiǎn)介:大家好,我是小童,Java開發(fā)工程師,CSDN博客博主,Java領(lǐng)域新星創(chuàng)作者
📕系列專欄:前端、Java、Java中間件大全、微信小程序、微信支付、若依框架、Spring全家桶
📧如果文章知識(shí)點(diǎn)有錯(cuò)誤的地方,請(qǐng)指正!和大家一起學(xué)習(xí),一起進(jìn)步👀
🔥如果感覺博主的文章還不錯(cuò)的話,請(qǐng)👍三連支持👍一下博主哦
🍂博主正在努力完成2023計(jì)劃中:以夢(mèng)為馬,揚(yáng)帆起航,2023追夢(mèng)人

編寫廣告服務(wù)接口

接下來(lái)我們編寫廣告相關(guān)的CRUD方法,首先在通用模塊編寫廣告服務(wù)接口:

// 廣告服務(wù)
public interface CategoryService {// 增加廣告void add(Category category);// 修改廣告void update(Category category);// 修改廣告狀態(tài)void updateStatus(Long id, Integer status);// 刪除廣告void delete(Long[] ids);// 根據(jù)Id查詢廣告Category findById(Long id);// 分頁(yè)查詢廣告Page<Category> search(int page, int size);// 查詢?nèi)繂⒂脧V告List<Category> findAll();
}

?創(chuàng)建廣告服務(wù)模塊

1、創(chuàng)建名為 shopping_category_service 的SpringBoot工程,添加相關(guān)依賴。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- MyBatisPlus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.0</version></dependency><!-- mysql驅(qū)動(dòng) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.itbaizhan</groupId><artifactId>shopping_common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><!-- 操作zookeeper --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

?2、設(shè)置該工程的父工程為 shopping

<parent><groupId>com.ittxc</groupId><artifactId>shopping</artifactId><version>1.0-SNAPSHOT</version>
</parent>

3、給 shopping 工程設(shè)置子模塊

<!-- 子模塊 -->
<modules><!-- 廣告服務(wù) --><module>shopping_category_service</module>
</modules>

4、編寫配置文件 application.yml

# 端口號(hào)
server:port: 9004
# 日志格式
logging:pattern:console: '%d{HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n'
# 配置Mybatis-plus
mybatis-plus:global-config:db-config:# 表名前綴table-prefix: bz_# 主鍵生成策略為自增id-type: autoconfiguration:# 關(guān)閉列名自動(dòng)駝峰命名映射規(guī)則map-underscore-to-camel-case: falselog-impl: org.apache.ibatis.logging.stdout.StdOutImp
l # 開啟sql日志
spring:# 數(shù)據(jù)源datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///baizhanshopping?serverTimezone=UTCusername: rootpassword01: 123456
dubbo:application:name: shopping_category_service # 項(xiàng)目名registry:address: zookeeper://192.168.100.131 #注冊(cè)中心地址port: 2181 # 注冊(cè)中心端口號(hào)timeout: 10000 # 注冊(cè)到zk上超市時(shí)間,msprotocol:name: dubbo # dubbo使用的協(xié)議port: -1 # 自動(dòng)分配端口scan:base-packages: com.ittxc.shopping_category_service.service # 包掃描

5、啟動(dòng)類掃描Mapper包

@SpringBootApplication
@MapperScan("com.itbaizhan.shopping_category_service.mapper")
public class ShoppingCategoryServiceApplication {public static void main(String[] args){SpringApplication.run(ShoppingCategoryServiceApplication.class, args);}
}

編寫廣告服務(wù)實(shí)現(xiàn)類

1、創(chuàng)建廣告Mapper接口

public interface CategoryMapper extends BaseMapper<Category> { }

2、創(chuàng)建廣告服務(wù)實(shí)現(xiàn)類

@DubboService
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;@Overridepublic void add(Category category) {categoryMapper.insert(category);}@Overridepublic void update(Category category){categoryMapper.updateById(category);}@Overridepublic void updateStatus(Long id, Integer status) {Category category = categoryMapper.selectById(id);category.setStatus(status);categoryMapper.updateById(category);}@Overridepublic Category findById(Long id) {return categoryMapper.selectById(id);}@Overridepublic void delete(Long[] ids) {categoryMapper.deleteBatchIds(Arrays.asList(ids));}@Overridepublic Page<Category> search(int page, int size) {return categoryMapper.selectPage(new Page(page,size),null);}@Overridepublic List<Category> findAll() {// 從數(shù)據(jù)庫(kù)查詢所有啟用的廣告QueryWrapper<Category> queryWrapper = new QueryWrapper();queryWrapper.eq("status",1);List<Category> categories = categoryMapper.selectList(queryWrapper);return categories;}
}

編寫廣告管理控制器

1、在管理員Api模塊編寫廣告管理控制器

/**
* 廣告
*/
@RestController
@RequestMapping("/category")
public class CategoryController {@DubboReferenceprivate CategoryService categoryService;/*** 分頁(yè)查詢廣告** @param page 頁(yè)碼* @param size 每頁(yè)條數(shù)* @return 查詢結(jié)果*/@GetMapping("/search")public BaseResult<Page<Category>> search(int page, int size) {Page<Category> page1 = categoryService.search(page, size);return BaseResult.ok(page1);}/*** 增加廣告** @param category 廣告對(duì)象* @return 操作結(jié)果*/@PostMapping("/add")public BaseResult add(@RequestBody Category category) {categoryService.add(category);return BaseResult.ok();}/*** 修改廣告** @param category 廣告對(duì)象* @return 操作結(jié)果*/@PutMapping("/update")public BaseResult update(@RequestBody Category category) {categoryService.update(category);return BaseResult.ok();}/*** 修改廣告狀態(tài)** @param id     廣告id* @param status 廣告狀態(tài) 0:未啟用 1:啟用* @return 操作結(jié)果*/@PutMapping("/updateStatus")public BaseResult updateStatus(Long id, Integer status) {categoryService.updateStatus(id,status);return BaseResult.ok();}/*** 根據(jù)Id查詢廣告** @param id 廣告id* @return 查詢結(jié)果*/@GetMapping("/findById")public BaseResult<Category> findById(Long id) {Category category = categoryService.findById(id);return BaseResult.ok(category);}/*** 刪除廣告** @param ids 廣告id集合* @return 操作結(jié)果*/@DeleteMapping("/delete")public BaseResult delete(Long[] ids) {categoryService.delete(ids);return BaseResult.ok();}
}

創(chuàng)建廣告用戶Api模塊

前臺(tái)用戶在訪問(wèn)首頁(yè)的時(shí)候是可以查看廣告的,但前臺(tái)項(xiàng)目無(wú)法使 用后臺(tái)項(xiàng)目的接口,因?yàn)楹笈_(tái)項(xiàng)目接口需要管理員登錄才能使用, 且前臺(tái)項(xiàng)目訪問(wèn)量大,我們需要專門編寫一個(gè)api模塊方便前臺(tái)用戶訪問(wèn)。

1、創(chuàng)建名為 shopping_category_customer_api 的SpringBoot工程,添加相關(guān)依賴。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><!-- 操作zookeeper --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><groupId>com.ittxc</groupId><artifactId>shopping_common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

2、設(shè)置該工程的父工程為 shopping 。

<parent><groupId>com.ittxc</groupId><artifactId>shopping</artifactId><version>1.0-SNAPSHOT</version>
</parent>

3、給 shopping 工程設(shè)置子模塊

<!-- 子模塊 -->
<modules><!-- 網(wǎng)站用戶操作廣告暴露的api --><module>shopping_category_customer_api</module>
</modules>

4、編寫配置文件 application.yml

# 端口號(hào)
server:port: 8002
# 日志格式
logging:pattern:console: '%d{HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n'
dubbo:application:name: shopping_category_customer_api #項(xiàng)目名registry:address: zookeeper://192.168.100.131 #注冊(cè)中心地址port: 2181       # 注冊(cè)中心的端口timeout: 10000 # 注冊(cè)到zk上超時(shí)時(shí)間,msprotocol:name: dubbo # dubbo使用的協(xié)議port: -1 # dubbo自動(dòng)分配端口

5、啟動(dòng)類忽略數(shù)據(jù)源自動(dòng)配置

@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class ShoppingCategoryCustomerApiApplication {public static void main(String[] args)
{SpringApplication.run(ShoppingCategoryCustomerApiApplication.class, args);}
}

6、編寫前臺(tái)用戶廣告控制器

/**
* 廣告
*/
@RestController
@RequestMapping("/user/category")
public class CategoryController {@DubboReferenceprivate CategoryService categoryService;/*** 查詢?nèi)繂⒂脧V告** @return 查詢結(jié)果*/@GetMapping("/all")public BaseResult<List<Category>> findAll() {List<Category> categories = categoryService.findAll();return BaseResult.ok(categories);}
}

7、啟動(dòng)前端客戶端項(xiàng)目,測(cè)試前臺(tái)查詢廣告接口

使用緩存優(yōu)化用戶查詢廣告

在用戶訪問(wèn)網(wǎng)站首頁(yè)時(shí),需要查詢網(wǎng)站的所有啟用廣告。而電商網(wǎng) 站用戶訪問(wèn)量大,大量用戶每次訪問(wèn)首頁(yè)都從數(shù)據(jù)庫(kù)查詢廣告非常 浪費(fèi)資源,我們可以使用Redis緩存技術(shù)優(yōu)化用戶對(duì)于廣告的查詢。 思路如下:

?安裝Redis

1、安裝GCC

yum install -y gcc

2、使用rz上傳Redis壓縮文件

3、解壓并安裝Redis

# 解壓Redis
tar -zxvf redis-6.2.6.tar.gz -C /usr/local
# 進(jìn)入Redis解壓目錄
cd /usr/local/redis-6.2.6/src/
# 編譯Redis
make
# 安裝Redis
make install

4、啟動(dòng)Redis

# 啟動(dòng)Redis,關(guān)閉保護(hù)狀態(tài)
./redis-server --protected-mode no

優(yōu)化廣告服務(wù)實(shí)現(xiàn)類

1、在廣告服務(wù)模塊添加redis起步依賴

<!-- redis -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-dataredis</artifactId>
</dependency>

2、在yml文件中配置redis連接

spring:# 數(shù)據(jù)源datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///baizhanshopping?serverTimezone=UTCusername: rootpassword01: 123456# redisredis:host: 192.168.100.131port: 6379timeout: 30000jedis:pool:max-idle: 8max-wait: -1max-active: 8min-idle: 0

3、修改廣告服務(wù)實(shí)現(xiàn)類

@DubboService
public class CategoryServiceImpl
implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;// 對(duì)象名必須叫redisTemplate,否則由于容器中有多個(gè)RedisTemplate對(duì)象造成無(wú)法注入@Autowiredprivate RedisTemplate redisTemplate;@Overridepublic void add(Category category) {categoryMapper.insert(category);refreshRedisCategory();}@Overridepublic void update(Category category){categoryMapper.updateById(category);refreshRedisCategory();}
@Overridepublic void updateStatus(Long id,Integer status) {Category category = categoryMapper.selectById(id);category.setStatus(status);categoryMapper.updateById(category);refreshRedisCategory();}@Overridepublic void delete(Long[] ids) {categoryMapper.deleteBatchIds(Arrays.asList(ids));}@Overridepublic Category findById(Long id) {return categoryMapper.selectById(id);}@Overridepublic Page<Category> search(int page,int size) {return categoryMapper.selectPage(new Page(page,size),null);}@Overridepublic List<Category> findAll() {// 1.從redis中查詢啟用的廣告// 1.1 獲取操作redis中l(wèi)ist數(shù)據(jù)的對(duì)象ListOperations<String,Category> listOperations = redisTemplate.opsForList();// 1.2 從redis中獲取所有啟用的廣告List<Category> categoryList = listOperations.range("categories", 0, -1);if (categoryList != null && categoryList.size() > 0){// 2.如果查到結(jié)果,直接返回System.out.println("從redis中查詢廣告");return categoryList;}else{// 3.如果redis中沒(méi)有數(shù)據(jù),則從數(shù)據(jù)庫(kù)查詢廣告,并同步到redis中System.out.println("從mysql中查詢廣告");// 從數(shù)據(jù)庫(kù)查詢廣告QueryWrapper<Category> queryWrapper = new QueryWrapper();queryWrapper.eq("status",1);List<Category> categories = categoryMapper.selectList(queryWrapper);// 同步到redis中l(wèi)istOperations.leftPushAll("categories",categories);return categories;}}/*** 更新redis中的廣告數(shù)據(jù)*/public void refreshRedisCategory(){// 從數(shù)據(jù)庫(kù)查詢廣告QueryWrapper<Category> queryWrapper = new QueryWrapper();queryWrapper.eq("status",1);List<Category> categories = categoryMapper.selectList(queryWrapper);// 刪除redis中的原有廣告數(shù)據(jù)redisTemplate.delete("categories");// 將新的廣告數(shù)據(jù)同步到redis中ListOperations<String,Category> listOperations = redisTemplate.opsForList();listOperations.leftPushAll("categories",categories);}
}

http://www.risenshineclean.com/news/46406.html

相關(guān)文章:

  • 學(xué)生做網(wǎng)站軟件自己怎么做引流推廣
  • 牛商網(wǎng)做網(wǎng)站多少錢做一個(gè)企業(yè)網(wǎng)站需要多少錢
  • 一元云購(gòu)網(wǎng)站開發(fā)國(guó)家職業(yè)技能培訓(xùn)官網(wǎng)
  • 手機(jī)端網(wǎng)站推廣營(yíng)銷管理
  • 游戲交易網(wǎng)站怎么做石獅seo
  • 鄭州整形網(wǎng)站建設(shè)上海谷歌seo公司
  • 做金融怎么進(jìn)基金公司網(wǎng)站咖啡的營(yíng)銷推廣軟文
  • 藝術(shù)網(wǎng)站制作北京seo產(chǎn)品
  • linux wordpress 下載文件優(yōu)化網(wǎng)站界面的工具
  • 如何設(shè)計(jì)大型電商網(wǎng)站建設(shè)seo系統(tǒng)
  • 南京酒店網(wǎng)站制作新聞?lì)^條
  • 正版香港免費(fèi)資料手機(jī)網(wǎng)站大全網(wǎng)絡(luò)營(yíng)銷怎么做
  • 做360手機(jī)網(wǎng)站優(yōu)化快女教師遭網(wǎng)課入侵視頻大全集
  • 搭建網(wǎng)站 軟件seo排名優(yōu)化軟件價(jià)格
  • 北京網(wǎng)站建設(shè)東軒seo蘇州百度推廣開戶
  • 做網(wǎng)站除了域名還需要什么網(wǎng)絡(luò)網(wǎng)站推廣
  • 企業(yè)三合一建站公司怎么找免費(fèi)seo排名優(yōu)化
  • 國(guó)外做ppt的網(wǎng)站百度開放云平臺(tái)
  • 申請(qǐng)域名后怎么做網(wǎng)站重慶森林經(jīng)典臺(tái)詞 鳳梨罐頭
  • wordpress 與公眾平臺(tái)廊坊關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • 建站模板怎么選近期國(guó)際熱點(diǎn)大事件
  • vs2010網(wǎng)站開發(fā) SQL武漢seo關(guān)鍵詞排名
  • 云南房產(chǎn)網(wǎng)站建設(shè)自媒體平臺(tái)哪個(gè)收益高
  • 網(wǎng)站搭建與網(wǎng)站建設(shè)論文收錄網(wǎng)站排名
  • 建設(shè)主管部門門戶網(wǎng)站鄭州網(wǎng)站排名優(yōu)化公司
  • 網(wǎng)站服務(wù)器一個(gè)多少錢知名品牌營(yíng)銷策略
  • 內(nèi)涵吧網(wǎng)站西安百度推廣運(yùn)營(yíng)
  • 中國(guó)企業(yè)500強(qiáng)排名一覽表seo技術(shù)平臺(tái)
  • 企業(yè)門戶網(wǎng)站制作一網(wǎng)信息一個(gè)簡(jiǎn)單便捷的新聞網(wǎng)站
  • 上海 網(wǎng)站平臺(tái)開發(fā)互聯(lián)網(wǎng)營(yíng)銷師考試題及答案